Linux學習之bash總結(持續進行中….)

Linux總結之Bash特性

  1. 命令歷史:
    1. 使用命令:history
    2. 環境變量:
      1. HISTSIZE:命令歷史緩衝區中記錄的條數,默認爲1000;
      2. HISTFILE:記錄當前登錄用戶在logout時歷史命令存放文件;
      3. HISTFILESIZE:命令歷史文件記錄歷史的條數,默認爲1000;
    3. 操作命令歷史:
      1. history d OFFSET刪除指定行的命令歷史;
      2. history c 清空命令歷史緩衝區中的命令;
      3. history # 顯示歷史中最近的#條命令;
      4. history a 手動追加當前會話緩衝區中的命令至歷史文件中;
    4. 調用歷史中的命令:
      1. !#:重複執行第#條命令;
      2. !!:重複執行上一條(最近一條命令;)
      3. !string:重複執行最近一次以指定字符串開頭的命令;
      4. 調用上一條命令的最後一個參數:
        1. !$
        2. ESC, .

  1. 控制命令歷史的記錄方式:

    環境變量:HISTCONTROL

    三個值:

    ignoredups:忽略重複的命令;所謂重複,一定是連續且完全相同,包括選項和參數;

    ignorespace:忽略所有以空白開頭的命令,不記錄;

    ignoreboth:忽略上述兩項,既忽略重複的命令,也忽略空白開頭的命令;

修改環境變量的方式:

export 變量名="VALUE"

或: VARNAME="VALUE" export VARNAME

  1. 命令補全:

    內部命令:直接通過shell補全;

    外部命令:bash根據PATH環境變量定義的路徑,自左而右地在每個路徑搜尋以給定命令命名的文件,第一次找到即爲要執行的命令;

    Note:在第一次通過PATH搜尋到命令後,會將其存入hash緩存中,下次使用不再搜尋PATH,從hash中查找;

    Tab鍵補全:

    若用戶給出的字符在命令搜索路徑中有且僅有一條命令與之相匹配,則Tab鍵直接補全;

    若用戶輸入的字符在命令搜索路徑中有多條命令與之相匹配,則再次Tab鍵可以將這些命令列出;

  1. 路徑補全:

以用戶輸入的字符串作爲路徑開頭,並在其指定路徑的上級目錄下搜索以指定字符串開頭的文件名;

如果唯一,則直接補全;

否則,再次Tab,列出所有符合條件的路徑及文件;

  1. 命令行展開:

1)~:展開爲用戶的主目錄;

2)~USERNAME : 展開爲指定用戶的主目錄;

  1. {}: 可承載一個以逗號分隔的列表,並將其展開爲多個路徑;

  1. 命令的執行結果狀態:

    成功或失敗;

    bash使用特殊變量$?保存最近一條命令的執行狀態結果;

    值: 0 : 成功;

    1-255:失敗,1,127,255爲系統保留;

    程序執行有兩類結果:

    程序的返回值;程序自身執行的輸出結果;

    程序的執行狀態結果;$?

  1. 命令別名(alias)
    1. 通過alias命令實現:
      1. alias 顯示當前shell進程所有可用的命令別名;
      2. 定義別名:alias NAME='VALUE' 定義別名NAME,其執行相當於執行命令VALUE,VALUE中可包含命令、選項、參數;
      3. 通過修改配置文件定義命令別名:

      當前用戶:~/.bashrc

      全局用戶:/etc/bashrc

Bash進程重新讀取配置文件:

source /path/to/config_file

./path/to/config_file

撤銷別名:unalias

unalias [-a] name [name ...]

Note:對於定義了別名的命令,要使用原命令,可用使用 \COMMAND

  1. glob(globing)

bash中用於實現文件名"通配"

通配符:*,?,[]

  1. * 任意從長度的任意字符;

    a*b:

  2. ? 任意單個字符;

    a?b:

  3. [] 匹配指定範圍內的任意單個字符;

    [0-9] [a-z] 不區分大小寫

    [admin] 可以是區間形式的,也可以是離散的;

4)[^] 匹配指定範圍外的任意字符;

[^0-9] 單個非數字的任意字符;

專用字符集合:

[:digit:] 任意單個數字,相當於[0-9]

[:lower:] 任意單個小寫字母,

[:upper:] 任意單個大寫字母;

[:alpha:] 任意單個大小寫字母;

[:alnum:] 任意數字或字母;

[:space:] 任意空白字符;

[:punct:] 任意單個特殊字符;

Note:在使用[]引用專用字符集合時,外層也需要嵌套[]。例如:

# ls -d /etc/l*[[:digit:]]*[[:lower:]]

  1. Bash快捷鍵:

    ©著作權歸作者所有:來自51CTO博客作者kalaguiyin的原創作品,如需轉載,請註明出處,否則將追究法律責任

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章