Linux
終端快捷鍵
光標移動
|
快捷鍵
|
作用
|
|
|
移動到開頭
|
|
|
移動到結尾
|
|
|
向左移動一個單詞
|
|
|
向右移動一個單詞
|
|
|
向左移動一個字符
|
|
|
向右移動一個字符
|
|
|
向左移動一個單詞
|
|
|
向右移動一個單詞
|
|
|
在上次光標和當前光標所在字符間跳轉
|
|
|
交換光標位置錢的兩個單詞
|
刪除
|
快捷鍵
|
作用
|
|
|
刪除光標後所有字符
|
|
|
刪除光標前所有字符
|
|
|
刪除光標前一個單詞
|
|
|
刪除光標所在字符(右側)
|
|
|
刪除光標前字符(左側)
|
撤銷
|
快捷鍵
|
作用
|
|
|
撤銷操作
|
|
|
粘貼ctrl+u/k剪切的內容
|
|
|
撤銷前一次輸入
|
|
|
撤銷前一次動作
|
替換
|
快捷鍵
|
作用
|
|
|
將光標當前字符與前一個字符替換
|
歷史命令編輯
|
快捷鍵
|
作用
|
|
|
上一條歷史命令
|
|
|
下一條歷史命令
|
|
|
上一次執行的命令的最後一個單詞
|
|
|
搜索歷史命令
|
控制命令
|
快捷鍵
|
作用
|
|
|
清除屏幕
|
|
|
鎖住終端,阻止屏幕輸出
|
|
|
解鎖終端,允許屏幕輸出
|
|
|
終止命令
|
|
|
補全,相當於tab
|
|
|
重複執行命令
|
|
|
操作的次數
|
|
|
掛起
|
!命令
|
快捷
|
作用
|
|
|
執行上條命令
|
|
|
執行前n條命令
|
shell中的 $ 用法
|
特殊符號
|
含義
|
|
$#
|
傳給腳本的參數個數
|
|
$0
|
shell腳本文件的名字
|
|
$1
|
傳遞給該shell腳本的第一個參數
|
|
$2
|
傳遞給該shell腳本的第二個參數
|
|
$@
|
傳給腳本的所有參數的列表
|
|
$*
|
以一個單字符串顯示所有向腳本傳遞的參數,與位置變量不同,參數可超過9個
|
|
$$
|
腳本運行的當前進程ID號,Shell本身的PID
|
|
$?
|
顯示最後命令的退出狀態,0表示沒有錯誤,其他表示有錯誤
|
|
$!
|
Shell最後運行的後台Process的PID
|
|
$-
|
使用Set命令設定的Flag一覽
|
|
$()
|
相當於``,括號中放的是命令
|
|
${}
|
括號中放的是變量。例如echo P A T H 取 P A T H 變 量 的 值 並 打 印 , 也 可 以 不 加 括 號 比 如 {PATH}取PATH變 量的值並打印,也可以不加括號比如PATH取PATH變量的值並打印,也可以不加括號比如PATH。
|
|
$1~n
|
添加到Shell的各參數值。$1是第1參數、$2是第2參數…。
|
${}的特殊用法
|
判斷/比較
語法(用例)
|
字符串判斷
|
語法
|
含義
|
|
str1 = str2
|
當兩個串有相同內容、長度時為真
|
|
str1 != str2
|
當串str1和str2不等時為真
|
|
-n str1
|
當串的長度大於0時為真(串非空)
|
|
-z str1
|
當串的長度為0時為真(空串)
|
|
str1
|
當串str1為非空時為真
|
數字的判斷
|
語法
|
含義
|
|
int1 -eq int2
|
兩數相等為真
|
|
int1 -ne int2
|
兩數不等為真
|
|
int1 -gt int2
|
int1大於int2為真
|
|
int1 -ge int2
|
int1大於等於int2為真
|
|
int1 -lt int2
|
int1小於int2為真
|
|
int1 -le int2
|
int1小於等於int2為真
|
文件相關的if判斷條件語句
|
語法
|
含義
|
|
-r file
|
用户可讀為真
|
|
-w file
|
用户可寫為真
|
|
-x file
|
用户可執行為真
|
|
-f file
|
文件為正規文件為真
|
|
-d file
|
文件為目錄為真
|
|
-c file
|
文件為字符特殊文件為真
|
|
-b file
|
文件為塊特殊文件為真
|
|
-s file
|
文件大小非0時為真
|
|
-t file
|
當文件描述符(默認為1)指定的設備為終端時為真
|
複雜邏輯判斷
|
語法
|
含義
|
|
-a
|
與
|
|
-o
|
或
|
|
!
|
非
|
[] 和 [[]] 的區別
if [[]] 要求括號裏的表達式前後必須有一個空格,格式如 if [[ xxx ]]。
當 if [[]] 用於字符串常量或變量比較時,表達式本身的運算符,如 <、>、==、!= ,其前後可以不加空格;
但當 if [[]] 用於數值比較時,表達式本身的運算符前後必須加空格,否則會得到相反的結果。
如:
|
在shell中查看每條指令實際執行的結果
set +x表示開始記錄,set -x表示停止記錄。
例子:
|
實用小技巧
查找包含某個字符串的所有文件,可以用於後續的自動處理:
|
日誌管理
dmesg命令可以查看系統的整個啓動日誌
GIT
批量刪除已合併分支
|
刪除遠程跟蹤分支
git remote prune origin
修改當前commit
git add . && git commit --amend --no-edit
該操作會修改當前最新commit並添加當前目錄下所有修改了但未提交的文件。
如果最新commit已經push到遠端,則需要再次強制推送到遠端。
查找某個commit被哪個branch和tag包含
查找被包含的branch:git branch --contains commit_id --all查找被包含的tag:git tag --contains tag_name
設置命令別名
|
也可以在config文件進行修改和查看,
在~/.gitconfig或項目的.git/config文件中,有以下信息,可以進行修改:
[alias]
a = add
c = commit
o = checkout
# ...
還可以直接用別人寫好的:
項目地址使用方法:
- 首先將該開源項目中的
gitalias.txt文件下載下來 - 然後在
.gitconfig文件裏面加入:
|
獲取兩個commit之間更改的文件
可以方便在shell或者bash中執行自動化操作
以最新的更新為例:git diff --name-only HEAD HEAD^執行自動化操作:for fp in `git diff --name-only HEAD HEAD^`; do echo $fp; done
Docker
刪除虛懸鏡像:docker images --filter dangling=true刪除所有虛懸鏡像:
|
列出latest鏡像之前的所有鏡像:docker images aka-gm --filter before=aka-gm:latest從以上輸出中取出鏡像的REPOSITORY與TAG:docker images aka-gm --filter before=aka-gm:latest --format "{{.Repository}}:{{.Tag}}"排除TAG為的鏡像並刪除:docker images aka-gm -f before=aka-gm:latest | grep aka-gm | grep -v "<none>" | awk '{printf "%s:%s\n",$1,$2}' | xargs -r docker rmi刪除TAG為的鏡像:docker images aka-gm -f before=aka-gm:latest | grep "<none>" | awk '{printf "%s:%s\n",$1,$2}' | xargs -r docker rmi
找出容器對應的日誌濾鏡:docker inspect --format='{{.LogPath}}' containername