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