bash的主要優點如下:
- 可以通過
檢視指令的曆史記錄history
- 指令和檔案路徑補全的好幫手-->TAB
- 指令别名
alias
- 工作控制、前景背景控制: (job control, foreground, background)
- 自動化腳本shell scripts
-
通配符
* 比對 0 或多個字元
? 比對任意一個字元
[list] 比對 list 中的任意單一字元
[!list] 比對 除list 中的任意單一字元以外的字元
[c1-c2] 比對 c1-c2 中的任意單一字元 如:[0-9] [a-z]
{string1,string2,...} 比對 sring1 或 string2 (或更多)其一字元串
{c2..c2} 比對 c1-c2 中全部字元 如{1..10}
注:使用
type COMMAND
可以判斷指令是不是Bash shell 内置指令
Bash shell 指令快速編輯
按鍵 作用
Ctrl+d 鍵盤輸入結束或退出終端
Ctrl+s 暫定目前程式,暫停後按下任意鍵恢複運作
Ctrl+z 将目前程式放到背景運作,恢複到前台為指令fg
Ctrl+a 将光标移至輸入行頭,相當于Home鍵
Ctrl+e 将光标移至輸入行末,相當于End鍵
Ctrl+k 删除從光标所在位置到行末
Alt+Backspace 向前删除一個單詞
Shift+PgUp 将終端顯示向上滾動
Shift+PgDn 将終端顯示向下滾動
Bash shell中的變量
- 擷取變量:
如echo $variable
echo $HOME
echo $PATH 或echo ${PATH}
- 設定變量
Var=value
- 删除變量
unset Var
- 如果需要該變量在其他子程式中執行,則需要以
時該變量變為環境變量export
export PATH
注:
- 雙引号仍然可以保有變量的内容,但單引号内僅能是一般字元 ,而不會有特殊符号
- 在一串指令中,在 ` 之内的指令将會被先執行,而其執行出來的結果将做為外部的輸入資訊!
環境變量
用 env 觀察環境變數與常見環境變量說明:
-
HOME
代表使用者的家目錄。還記得我們可以使用 cd ~ 去到自己的家目錄嗎?或者利用 cd 就可以直接回到使用者家目錄了。那就是取用這個變數啦~ 有很多程式都可能會取用到這個變數的值!
-
SHELL
告知我們,目前這個環境使用的 SHELL 是哪支程式? Linux 預設使用 /bin/bash 的啦!
-
HISTSIZE
這個與『曆史指令』有關,亦即是, 我們曾經下達過的指令可以被系統記錄下來,而記錄的『筆數』則是由這個值來設定的。
-
MAIL
當我們使用 mail 這個指令在收信時,系統會去讀取的郵件信箱檔案 (mailbox)。
-
PATH
就是執行檔搜尋的路徑啦~目錄與目錄中間以冒号(:)分隔, 由于檔案的搜尋是依序由 PATH 的變數内的目錄來查詢,是以,目錄的順序也是重要的喔。
-
LANG
這個重要!就是語系資料啰~很多訊息都會用到他, 舉例來說,當我們在啟動某些perl 的程式語言檔案時,他會主動的去分析語系資料檔案, 如果發現有他無法解析的編碼語系,可能會産生錯誤喔!一般來說,我們中文編碼通常是 zh_TW.Big5 或者是 zh_TW.UTF-8,這兩個編碼偏偏不容易被解譯出來,是以,有的時候,可能需要修訂一下語系資料。這部分我們會在下個小節做介紹的!
-
RANDOM
這個玩意兒就是『随機亂數』的變數啦!目前大多數的 distributions 都會有亂數産生器,那就是 /dev/random 這個檔案。我們可以透過這個亂數檔案相關的變數 ($RANDOM) 來随機取得亂數值喔。在 BASH 的環境下,這個 RANDOM 變數的内容,介于 0~32767 之間,是以,你隻要 echo $RANDOM 時,系統就會主動的随機取出一個介于 0~32767 的數值。萬一我想要使用 0~9 之間的數值呢?呵呵~利用 declare 宣告數值類型, 然後這樣做就可以
set
可以檢視所有的變量
自定義變量和環境變量最大的差別在于是否會被子程式所繼續引用,因為子程式僅會繼承父程式的環境變量, 而不會繼承父程式的自定義變量
自定義變量-->環境變量 export Var
環境變量 --> 自定義變量 declare