bash的特性

Dabric發表於2018-07-12

命令列編輯


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、顯示檔名中包含了非字母或數字的特殊符號的檔案。