Linux Bash Shell優點和強大功能介紹
知道什么是 Shell 之后,那么我們來了解一下 Linux 使用的是哪一個 shell 呢?什么!哪一個?難道說 shell 不就是『一個 shell 嗎?』哈哈!那可不!由于早年的 Unix 年代,發展者眾,呵呵!所以由于 shell 依據發展者的不同就有許多的版本,例如常聽到的 Bourne SHell (sh) 、在 Sun 里頭預設的 C SHell、 商業上常用的 K SHell、, 還有 TCSH 等等,每一種 Shell 都各有其特點。
至于 Linux 使用的這一種版本就稱為『 Bourne Again SHell (簡稱 bash ) 』,這個 Shell 是 Bourne Shell 的增強版本,也是基準于 GNU 的架構下發展出來的呦!
在介紹 shell 的優點之前,先來說一說 shell 的簡單歷史吧:第一個流行的 shell 是由 Steven Bourne 發展出來的,為了紀念他所以就稱為 Bourne shell ,或直接簡稱為 sh !而后來另一個廣為流傳的 shell 是由柏克萊大學的 Bill Joy 設計依附于 BSD 版的 Unix 系統中的 shell ,這個 shell 的語法有點類似 C 語言,所以才得名為 C shell ,簡稱為 csh !由于在學術界 Sun 主機勢力相當的龐大,而 Sun 主要是 BSD 的分支之一,所以 C shell 也是另一個很重要而且流傳很廣的 shell 之一(因為太多的程式設計師使用的就是 C 語言啦!)!
好了,那么 BASH 是怎么一回事呢?這個 shell 是 GNU 計畫中重要的工具軟體之一,目前也是 GNU 作業系統中標準的 shell ,他主要相容于 sh 。所以,可想而知的,目前幾乎所有的 Linux distribution 都是使用 bash 作為管理核心的主要 shell 啰!那么這個 shell 有什么好處,干嘛 Linux 要使用他作為預設的 shell 呢?
BASH 主要的優點有底下幾個:
· 命令編修能力(類似 DOS 的 doskey 功能):使用 bash 里頭,個人認為相當棒的一個功能就是『他能記憶使用過的指令!』這功能真的相當的棒!因為我只要在指令列按『上下鍵』就可以找到前一個輸入的指令!而預設的指令記憶功能可以到達 1000 個!也就是說,你曾經下達過的指令都被記錄下來了,記錄的檔案在你的家目錄內的 .bash_history !至于這一次登入所執行的指令都被暫存在暫存區中,成功的登出系統后,該指令記憶才會記錄到 .bash_history 當中!這有什么功能呢?最大的好處就是可以『查詢曾經做過的舉動!』,如此可以知道你的執行步驟,那么就可以追蹤您曾下達的指令,以作為除錯的工具!但如此一來也有個煩惱,就是如果被駭客入侵了,那么他只要翻你曾經執行過的指令,剛好你的指令又跟系統有關(例如直接輸入 MySQL 的密碼在指令列上面)那么很容易就被破解你的 Linux 主機!所以,最好是將記錄的指令數目減小一點較好!
·檔案比對補全功能(比對資料正確性):這個功能也相當的棒!如果在執行命令的時候不想按下太多的按鍵,例如指令 pcprofiledump 夠長吧!好了,那么如果你輸入了 pcprofile 之后,再按下 [Tab] 按鍵的話,那么 bash 馬上會自動的將后面的 dump 接上來!那如果有重復的指令呢?那么按下兩次 [Tab] 將會把所有重復的指令給他列出來啰!
o直接在指令列按下 [Tab][Tab] 兩次,那么 Linux 將會把系統內的所有執行檔列出來;
另外一個優點就是,可以將該指令所進行的 parameter (與路徑或檔案相關的)比對后,列出正確的項目!舉個例子來說,如果我要列出 /etc/sysconfig/network-scripts 里面的所有檔案時,要如何下達參數?
o ls -al /etc/sysconfig/network-scripts
那我可以在輸入到 network 時按下 [Tab] 按鍵,則 -scripts 就會被自動的加入命令列了!反正真的是蠻方便的,有事沒事多按[tab] 按鍵是不錯的一件事呦!
·命令別名(alias)設定功能:假如我需要知道這個目錄底下的所有檔案(包含隱藏檔)及所有的檔案屬性,那么我就必須要下達 ls -al 這樣的指令列,唉!真麻煩,有沒有更快的取代方式?呵呵!就使用命令別名呀!例如我最喜歡直接以 lm 來取代上面的命令,也就是說, lm 會等于 ls -al 這樣的一個功能,嘿!那么要如何作呢?就使用 alias 即可!你可以在指令列出入 alias 就可以知道目前的命令別名有哪些了!也可以直接下達命令來設定別名呦:
oalias lm='ls -al'
·工作控制 (jobs)、前景背景控制:這部分我們在之后的 指令篇會再提及!使用前、背景的控制可以讓工作進行的更為順利!至于工作控制(jobs)的用途則更廣,可以讓我們隨時將工作丟到背景中執行!而不怕不小心使用了 [Ctrl] + C 來停掉該程序!真是好樣的!
·Shell scripts 的強大功能:在 DOS 年代還記得將一堆指令寫在一起的所謂的『批次檔』吧?在 Linux 底下的 shell scripts 則發揮的更為強大的功能,可以將您日常生活當中常需要下達的連續指令寫成一個檔案,該檔案并且可以透過對談互動式的方式來進行主機的偵測工作!也可以藉由 shell 提供的環境變數及相關指令來進行設計,哇!整個設計下來幾乎就是一個小型的程式語言了!該 scripts 的功能真的是超乎我的想象之外!以前在 DOS 底下需要程式語言才能寫的東西,在 Linux 底下使用簡單的 shell scripts 就可以幫你達成了!真的利害!!這部分我們在底下再來談!
【編輯推薦】