[RHCE] Bash

BASH

一台電腦可以簡單的分為三個部分,硬體、系統核心、以及使用者介面。Shell屬於使用者介面的一種,用來幫助使用者下達命令給核心,核心再去控制硬體。Bash是Linux預設的Shell,全名為Bourne Again Shell。Linux中不只Bash一種Shell,可以在/etc/shells中查詢目前可使用的Shell;Bash主要的優點有以下六點:
1326909221-1202286163.jpg-RHCE Bash

歷史紀錄

利用 #history 可以列出之前輸入過的的命令,上限筆數預設是1000筆。列表中編號數字越大的表示時間越接近當前。
1326909247-1931365318.jpg-RHCE Bash

可以利用 #![編號] 重新入數列表中特定編號的命令, #!! 可以重新輸入上一筆命令。利用 #![關鍵字] 可以重新輸入以關鍵字開頭且時間最接近的命令。或者在使用者家目錄下的.bash_history檔中,可以看到使用者最近一次登出前的命令歷史紀錄。
紀錄的上限筆數可以輸入 #echo $HISTSIZE 查詢。
1326909297-273358232.jpg-RHCE Bash

可在/etc/profile中變更上限設定。
1326909308-488180289.jpg-RHCE Bash

命令與檔案補全

在輸入Shell的時候,有些太過複雜難記的的命令或檔案,可以擅用Tab鍵幫忙補全。例如當我們想輸入 #ifconfig 這個命令,但是可能只記得if這兩個字。這時按下Tab,系統不會有反應,但是再按一次系統就會列出所有if開頭的命令。如果是輸入ifco再按下Tab,因為可能的命令只剩下一個了,系統就會自動補齊ifconfig。除了命令之外Tab鍵也可以補齊檔案名稱。

別名

別名的概念有點像是快捷鍵,使用簡單易記的自訂命令來取代過長的命令。例如 #route -n 這個指令使用者覺得太長,想用 #rou 這個別名取代原本的命令。這時候就可以輸入 #alias rou='route -n',如此之後輸入 #rou 就可以等同 #route -n
1326909390-2266064613.jpg-RHCE Bash

另外也可以使用 #alias [命令] 去查詢這個別名原本的命令。
1326909390-4048766203.jpg-RHCE Bash

而輸入 #alias 可以查詢目前所使用的別名有哪些。
1326909390-485570478.jpg-RHCE Bash

工作控制

命令輸入之後會在系統中產生一個工作,Bash可以對這些工作進行控制。Ctrl+C可以終止目前正在進行的工作,Ctrl+Z可以暫停目前正在進行的工作,將之移至背景。前景與背景的差別在於,前景可以讓使用者進行操作,而背景則無法。使用 #jobs 可以查詢目前背景的工作有哪些,這些工作之前會有其編號。
1326909390-4283873690.jpg-RHCE Bash

加入參數-r是只列出背景執行的工作,-s是列出背景暫停的工作。背景執行是將工作移到背景繼續執行,讓使用者可以繼續輸入別的命令。背景暫停就是將工作暫停移到背景,而工作在背景中是完全靜止的。使用 #fg %[工作編號] 可以將背景中的工作移回前景,若不指定編號則會移動時間最接近的。使用 #bg %[工作編號] 可以將背景中暫停的工作變成背景下執行。或者在命令之後加上「&」,例如 #ping 192.168.1.0 &,這個命令就會被直接移動到背景執行。

腳本

腳本可以讓使用者集合許多命令以及參數,變成一個可以同時完成很多事情的Shell Script。例如管理員要在每個使用者的家目錄下建立10個不同的檔案,並且移除掉特定副檔名的檔案。這樣的情況下,經由編寫Shell Script來集合命令,可以讓管理員更快速的完成工作。

萬用字元

使用者可以使用萬用字元來加速命令的操作。例如想利用yum安裝跟httpd有關的所有檔案的時候,我們可以輸入 #yum install httpd*。這樣就會把以httpd開頭的檔案通通都安裝了。

留言