命令列編輯
Ctrl+a: 將游標調至命令列首
Ctrl+e: 將游標調至命令列尾
Ctrl+u: 刪除游標前的所有內容
Ctrl+k: 刪除游標後的搜有內容
命令別名
在shell中定義的別名僅在當前shell生命週期中有效,別名的有效範圍僅為當前shell程式。如果shell中的某個命令本身具有別名,利用COMMAND來執行命令本身的功能。
# alias COMMANDALias=`COMMAND [option] [argument]` (最好使用單引號)
# alias 顯示系統中所有的命令別名)
# unalias COMALIAS 取消命令別名
命令替換
把命令中的某個子命令替換為其執行結果的過程
$(COMMAND),反引號:`COMMAND`
# echo "The current directory is $(pwd)"
建立一個以當前時間命名的檔案如:file-2018-01-30-20-39.txt
# touch ./file-$(date +%F-%H-%M-%S).txt
命令歷史
- 命令history可以檢視命令執行的歷史
-c: 清空命令歷史
-d OFFSET [n]: 刪除指定位置的命令
-d 510 3: 從第510個記錄向後刪除共計三個
-w: 儲存緩衝區命令歷史至歷史檔案中(歷史檔案在使用者家目錄下的.bash_history)
- 命令歷史使用的技巧
!n: 執行命令歷史中第n條命令;
!-n: 執行命令歷史中倒數第n條命令;
!!: 執行上一條命令;
!string: 執行命令歷史中最近一個以指定字串開頭的命令;
!$: 引用前一個命令的最後一個引數;(或者按Esc鬆開按.或者按Alt+.)
命令&&路徑補全
- 命令補全
搜尋PATH環境變數所指的每個路徑下以我們給出的字串開頭的可執行檔案,在命令搜尋路徑下查詢
- 路徑補全
搜尋我們給出的起始路徑下的每個檔名,並試圖補全,在給定打頭路徑下查詢
bash支援的引號
- “: 命令替換
- “”: 弱引用,可以實現變數和命令替換
- “: 強引用,不能實現變數替換
檔名通配 globbing
- ” * “: 匹配任意個任意字元
- ” ? “: 匹配任意單個字元
- ” [] “: 匹配指定範圍內的單個字元
[:space:]: 空白字元
[:punct:]: 標點符號
[:lower:]: 小寫字母
[:upper:]: 大寫字母
[:alpha:]: 大小寫字母
[:digit:]: 數字
[:alnum:]: 數字和大小寫字母
- ” [^] “: 匹配指定範圍外的單個字元
[[:alpha:]]*[[:space:]]*[[:alpha:]]
練習:
1、建立a123, cd6, c78m, c1, my, m.z, k 67, 8yu, 789等檔案;注意,以上檔案是以逗號隔開的,其它符號都是檔名的組成部分
2、顯示所有以a或m開頭的檔案;
3、顯示所有檔名中包含了數字的檔案;
4、顯示所有以數字結尾且檔名中不包含空白的檔案;?????? ls *[^[:space:]]*[0-9]
5、顯示檔名中包含了非字母或數字的特殊符號的檔案。