Linux總結之Bash特性
- 命令歷史:
- 使用命令:history
- 環境變量:
- HISTSIZE:命令歷史緩衝區中記錄的條數,默認爲1000;
- HISTFILE:記錄當前登錄用戶在logout時歷史命令存放文件;
- HISTFILESIZE:命令歷史文件記錄歷史的條數,默認爲1000;
- 操作命令歷史:
- history d OFFSET刪除指定行的命令歷史;
- history c 清空命令歷史緩衝區中的命令;
- history # 顯示歷史中最近的#條命令;
- history a 手動追加當前會話緩衝區中的命令至歷史文件中;
- 調用歷史中的命令:
- !#:重複執行第#條命令;
- !!:重複執行上一條(最近一條命令;)
- !string:重複執行最近一次以指定字符串開頭的命令;
- 調用上一條命令的最後一個參數:
- !$
- ESC, .
- 控制命令歷史的記錄方式:
環境變量:HISTCONTROL
三個值:
ignoredups:忽略重複的命令;所謂重複,一定是連續且完全相同,包括選項和參數;
ignorespace:忽略所有以空白開頭的命令,不記錄;
ignoreboth:忽略上述兩項,既忽略重複的命令,也忽略空白開頭的命令;
修改環境變量的方式:
export 變量名="VALUE"
或: VARNAME="VALUE" export VARNAME
- 命令補全:
內部命令:直接通過shell補全;
外部命令:bash根據PATH環境變量定義的路徑,自左而右地在每個路徑搜尋以給定命令命名的文件,第一次找到即爲要執行的命令;
Note:在第一次通過PATH搜尋到命令後,會將其存入hash緩存中,下次使用不再搜尋PATH,從hash中查找;
Tab鍵補全:
若用戶給出的字符在命令搜索路徑中有且僅有一條命令與之相匹配,則Tab鍵直接補全;
若用戶輸入的字符在命令搜索路徑中有多條命令與之相匹配,則再次Tab鍵可以將這些命令列出;
- 路徑補全:
以用戶輸入的字符串作爲路徑開頭,並在其指定路徑的上級目錄下搜索以指定字符串開頭的文件名;
如果唯一,則直接補全;
否則,再次Tab,列出所有符合條件的路徑及文件;
- 命令行展開:
1)~:展開爲用戶的主目錄;
2)~USERNAME : 展開爲指定用戶的主目錄;
- {}: 可承載一個以逗號分隔的列表,並將其展開爲多個路徑;
- 命令的執行結果狀態:
成功或失敗;
bash使用特殊變量$?保存最近一條命令的執行狀態結果;
值: 0 : 成功;
1-255:失敗,1,127,255爲系統保留;
程序執行有兩類結果:
程序的返回值;程序自身執行的輸出結果;
程序的執行狀態結果;$?
- 命令別名(alias)
- 通過alias命令實現:
- alias 顯示當前shell進程所有可用的命令別名;
- 定義別名:alias NAME='VALUE' 定義別名NAME,其執行相當於執行命令VALUE,VALUE中可包含命令、選項、參數;
- 通過修改配置文件定義命令別名:
當前用戶:~/.bashrc
全局用戶:/etc/bashrc
Bash進程重新讀取配置文件:
source /path/to/config_file
./path/to/config_file
撤銷別名:unalias
unalias [-a] name [name ...]
Note:對於定義了別名的命令,要使用原命令,可用使用 \COMMAND
- glob(globing)
bash中用於實現文件名"通配"
通配符:*,?,[]
- * 任意從長度的任意字符;
a*b:
- ? 任意單個字符;
a?b:
- [] 匹配指定範圍內的任意單個字符;
[0-9] [a-z] 不區分大小寫
[admin] 可以是區間形式的,也可以是離散的;
4)[^] 匹配指定範圍外的任意字符;
[^0-9] 單個非數字的任意字符;
專用字符集合:
[:digit:] 任意單個數字,相當於[0-9]
[:lower:] 任意單個小寫字母,
[:upper:] 任意單個大寫字母;
[:alpha:] 任意單個大小寫字母;
[:alnum:] 任意數字或字母;
[:space:] 任意空白字符;
[:punct:] 任意單個特殊字符;
Note:在使用[]引用專用字符集合時,外層也需要嵌套[]。例如:
# ls -d /etc/l*[[:digit:]]*[[:lower:]]
- Bash快捷鍵:
©著作權歸作者所有:來自51CTO博客作者kalaguiyin的原創作品,如需轉載,請註明出處,否則將追究法律責任