1. 程式人生 > >Linux之bash特性

Linux之bash特性

什麼是shell?
字面意思:殼,充當人機互動的翻譯官,當用戶輸入一條命令,shell就會解析。shell位於作業系統外層,負責與使用者互動。
Linux之bash特性
shell型別:可以檢視/etc/shells檔案,bash shell作為系統的預設shell,比較流行,bash有眾多特性。
檢視系統當前shell:#echo $SHELL

  • 命令歷史記錄
  • 命令/目錄補全功能
  • 命令列展開
  • 命令的執行結果
  • 快捷鍵
  • glob萬用字元
  • 多命令執行

  • 命令歷史記錄
    shell程序會將儲存此前使用者提交執行過的命令,儲存在使用者家目錄:~/.bash_history
    檢視:#history
    可以通過修改環境變數實現history的配置:
    HISTSIZE:shell程序儲存的歷史條數,預設1000
    HISTFILE:儲存資料的檔案

    • 用法:
      history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]
      -c:清空歷史
      -d offset:刪除指定命令歷史
      -r:從檔案讀取命令歷史至歷史列表中;
      -w:把歷史列表中的命令追加至歷史檔案中
      n:顯示歷史的第幾條命令
    • 呼叫命令歷史列表中的命令:
      !#:再一次執行歷史列表中的第#條命令;
      !!:再一次執行上一條命令;
      !STRING:再一次執行命令歷史列表中最近一個以STRING開頭的命令;
    • 呼叫上一條命令的最後一個引數
      快捷鍵:esc,. #先按ESC鍵再按.號鍵
      特殊字元: !$
  • 命令/目錄補全功能
    在mini系統安裝,引數不能補齊,需要安裝一個包:bash-completion

    • 命令補齊:Tab鍵補齊
      命令查詢機制: 查詢內部命令--> 根據PATH環境變數中設定的目錄,自左而右逐個搜尋目錄下的檔名;

    • 路徑補齊:
      在給定的起始路徑下,以對應路徑下的打頭字串來逐一匹配起始路徑下的每個檔案:
      tab:如果是唯一標識,則直接補全,否則,再按一次tab會給出列表供選擇
  • 命令列展開
    ~:自動展開為使用者的家目錄,或指定的使用者的家目錄;
    {}:可承載一個以逗號分隔的路徑列表,並能夠將其展開為多個路徑;
    Linux之bash特性
  • 命令的執行結果
    判斷命令的結果是否執行成功,通過返回狀態碼判斷,命令執行完後,狀態碼儲存在bash的特殊變數中:$?
    0:表示成功
    1~255:表示失敗
    Linux之bash特性
  • 快捷鍵
    Ctrl+a:跳轉至命令列行首  ==home鍵
    Ctrl+e:跳轉至命令列行尾 ==end鍵
    Ctrl+u:刪除行首至游標所在處之間的所有字元;
    Ctrl+k:刪除游標所在處至行尾的所有字元;
    Ctrl+l:清屏,相當於clear
    Ctrl+w:在游標處起往前刪除一個單詞
    Ctrl+<-|->:Ctrl加左右鍵快速往前完後移動游標
  • glob萬用字元
匹配模式:元字元
            *:匹配任意長度的任意字元
                pa*, *pa*, *pa, *p*a*
                    pa, paa, passwd
            ?:匹配任意單個字元
                pa?, ??pa, p?a, p?a?
                    pa, paa, passwd
            []:匹配指定範圍內的任意單個字元
                    有幾種特殊格式:
                    [a-z], [A-Z], [0-9], [a-z0-9]
                    [[:upper:]]:所有大寫字母
                    [[:lower:]]:所有小寫字母
                    [[:alpha:]]:所有字母
                    [[:digit:]]:所有數字
                    [[:alnum:]]:所有的字母和數字
                    [[:space:]]:所有空白字元
                    [[:punct:]]:所有標點符號
                    例如:匹配pa##的檔案,2開頭的三位數
                    pa[0-9][0-9], 2[0-9][0-9]
            [^]:匹配指定範圍外的任意單個字元
                [^[:upper:]]
                [^0-9]
                [^[:alnum:]]
  • 多命令執行
    COMMAND1; COMMAND2; COMMAND3; ...
    邏輯關係:
    與: &&
    或: ||
    非: !
COMMAND1 && COMMAND2
COMMAND1為“假”,則COMMAND2不會再執行;
否則,COMMAND1為“真”,則COMMAND2必須執行;

COMMAND1 || COMMAND2
COMMAND1為“真”,則COMMAND2不會再執行;
否則,COMMAND1為“假”,則COMMAND2必須執行;

! COMMAND:COMMAND為真則為假,反之亦然。

Linux之bash特性