4.1 bash的特性
a) 支援指令曆史、指令補全
b) 支援管道、重定向
c) 支援指令别名
d) 支援指令行編輯
e) 支援指令行展開
f) 支援檔案名通配
g) 支援變量
h) 支援程式設計
4.2 bash支援的引号
``:指令替換
"":弱引用,可以實作變量替換
'':強引用,不完成變量替換
4.3 指令行編輯:
4.3.1 光标跳轉
Ctrl+a:跳到指令行首
Ctrl+e:跳到指令行尾
Ctrl+u:删除光标至指令行首的内容
Ctrl+k:删除光标至指令行尾的内容
Ctrl+<--:光标定位到離自己最近的一個單詞前面
Ctrl+l:清屏
4.3.2 指令曆史
history:檢視指令曆史
-c:清空指令曆史
-d OFFSET [n]:删除指定位置的指令曆史
-w:儲存指令曆史至曆史檔案~/.bash_history中
指令曆史的使用技巧:
!n:執行指令曆史中的第n條指令
!-n:執行指令曆史中倒數第n條指令
!!:執行上一條指令
!string:執行指令曆史中最近一個以指定字元串開頭的指令
!$:引用前一個指令的最後一個參數
esc,.:按下esc松開後按.,引用前一個指令的最後一個參數
控制指令曆史的記錄方式:
環境變量:HISTCONTROL
ignoredups:忽略重複的指令(連續且相同方為“重複”)
ignorespace:忽略所有以空格開頭的指令,如“ ls -l”
ignoreboth:ignoredups和ignorespace均生效
修改環境變量HISTCONTROL值的方式:export HISTCONTROL=ignoreboth
4.3.3 指令補全
搜尋PATH環境變量所指定的每個路徑下以我們給出的字元串開頭的可執行檔案,如果多于一個,兩次tab,可以給出清單,否則将直接補全
4.3.4 路徑補全
搜尋我們給出的起始路徑下的每個檔案名,并試圖補全
4.3.5 指令别名
<code>alias</code> <code>CMDALIAS=</code><code>'COMMAND [options] [arguments]'</code>
在shell中定義的别名僅在目前shell生命周期中有效,别名的有效範圍為目前的shell程序。
4.4 指令替換
<code>$(COMMAND)或`COMMAND`</code>
把指令中某個子指令替換為其執行結果的過程,就叫做指令替換
4.5 檔案名通配:globbing
*:比對任意長度的任意字元
?:比對任意單個字元
[]:比對指定範圍内的任意單個字元
[abc],[a-m],[0-9]
[[:space:]] 表示空白字元
[[:punct:]] 表示标點符号
[[:lower:]] 表示小寫字母
[[:upper:]] 表示大寫字母
[[:alpha:]] 表示大小寫字母
[[:digit:]] 表示數字
[[:alnum:]] 表示數字和大小寫字母
使用man 7 glob指令可以獲得以上字元集合的幫助資訊!!!
[^]:比對指定範圍之外的任意單個字元
4.6 環境變量:
PATH:指令搜尋路徑
HISTSIZE:指令曆史緩沖區大小
SHELL:目前shell
4.6.1 bash内置變量:
RANDOM:儲存着0-32768之間的随機數
随機數生成器:熵池
/dev/random:其生成的随機數用盡時會阻塞使用者程序,待生成更多的随機數裡即恢複,比較安全
/dev/urandom:其生成的随機數用盡時會通過軟體模拟生成更多的随機數進來,不會阻塞使用者程序
4.7 指令行展開
~:展開為使用者的主目錄
~USERNAME:展開為指定使用者的主目錄
{}:可承載一個以逗号分隔的清單,并将其展開為多個路徑
/tmp/{a,b} ==> /tmp/a,/tmp/b
4.8 指令的執行結果狀态
bash使用特殊變量$?儲存最近一條指令的執行狀态結果
程式執行以後有兩類結果:
a) 程式的傳回值
b) 程式的執行狀态結果
程式狀态傳回代碼(0-255):
0:正确執行
1-255:錯誤執行,1、2、127系統預留,有特殊意義
本文轉自 忘情OK 51CTO部落格,原文連結:http://blog.51cto.com/itchentao/1903593,如需轉載請自行聯系原作者