Linux BASH Shell腳本編程超級工具介紹
超級工具
terminals,xterms 和 shells shell是一個(gè)全功能的編程環(huán)境。其背景知識如下。
DEC公司推出的 PDP-11 ,體積?。ū环Q為 mini)而且價(jià)格低(10000$),在大學(xué)中引起了巨大的反響。為了方便移植,1969 年,Ken Thompson 開始寫后來成為 Unix(與MULTICS相對)的***行代碼。后來, Dennis Ritchie為這個(gè)新的操作系統(tǒng)設(shè)計(jì)了一種新的編程語言--
C 語言。雖然 Unix 的效率不及原來的操作系統(tǒng),但有三個(gè)突出的優(yōu)點(diǎn):
1. 可以任意移植到其他機(jī)器
2. 其中的 C 語言大大簡化了編程
3. free。
終端(terminals)
Unix是可以在許多種機(jī)器上運(yùn)行的操作系統(tǒng),但人們又如何使用這些機(jī)器呢?他們是通過啞終端來連接到這些機(jī)器,也就是用鍵盤、顯示器及足夠的 electronics(電子元件)組成的機(jī)器與中央計(jì)算機(jī)(central computer)相連。在這些終端上,用戶可以敲字符(teletypy),
這就是字符串'tty'表示終端設(shè)備文件,和'getty'命令的名稱來歷。為了避免鍵盤布局的混亂,人們創(chuàng)建了一個(gè)含有所有不同終端特性的(capability)文件,這就是'termcap',參見'/etc/termcap'。linux 終端大多數(shù)用'vt100'或'linux'作為終端類型。
xterms在八十年代初期,產(chǎn)生了X Window System 。九十年代早期,產(chǎn)生了XFree86 。X Window 中一個(gè)很大的好處是可以運(yùn)行多個(gè)虛擬(virtual)終端。甚至在 X Window 下就有這么個(gè)應(yīng)用程序--'xterm'。您將發(fā)現(xiàn)'xterm'和'virtual terminal'在很多情況下都是一樣的。其他的終端模擬器(terminal emulator),如 rxvt、konsole、aterm、eterm、wterm 等等。終端模擬器(又稱為虛擬終端)通過偽(pseudo) tty 設(shè)備-- pty 與系統(tǒng)相連,并且使用自己的顯示標(biāo)準(zhǔn)--xterm 。這導(dǎo)致不同的終端模擬器可能在一些按鍵或程序上存在細(xì)小的差別,取決于模擬器多大程度上遵守了'xterm'的顯示標(biāo)準(zhǔn)。
shells shell是用戶和linux(或者更準(zhǔn)確的說,是你和Linux內(nèi)核)之間的接口程序。 你在提示符下輸入的每個(gè)命令都由shell先解釋然后傳給linux內(nèi)核。為了在終端中運(yùn)行程序,需要 shell 。shell 是操作系統(tǒng)的一部分,用來與用戶打交道,并且可以用來協(xié)調(diào)各個(gè)命令。***個(gè)真正的 Unix shell -- 'sh',亦稱為'Bourne shell',誕生于 1975 年, 作者是Steve Bourne 。很快,出現(xiàn)了其他 shell ,如基于原始'Bourne shell'的'ksh'、'zsh',后者常用作專屬 Unixes 系統(tǒng)中的標(biāo)準(zhǔn) shell ;也有一些從 C 語言中衍生出來的 shell , 如'csh'或'tcsh'。在 linux 中,標(biāo)注的 shell 是'bash',即 the GNU Bourne-Again Shell 。這個(gè) shell功能非常強(qiáng)大,壓縮的 man page 就有 50 KB 。
Shell 起步
首先,有一點(diǎn)小說明:在平常應(yīng)用中,建議您不要用'root'帳號運(yùn)行 shell , 如果您還是新手,這一點(diǎn)尤其要注意。作為普通用戶,不管您有意還是無意,都無法破壞系統(tǒng);但如果是'root',那就不同了,只要敲幾個(gè)字母,就可能導(dǎo)致災(zāi)難性后果。
當(dāng)您登入系統(tǒng)或打開一個(gè) xterm 窗口,首先看到的是提示符(prompt)。Red Hat linux的標(biāo)準(zhǔn)提示符包括了您的用戶名、登入的主機(jī)名(沒有設(shè)置的話,是'localhost')、 當(dāng)前所在的目錄(working directory)、提示符號:
[tom@belbo tom]$
我以用戶名'tom'登入名為'belbo'的主機(jī),當(dāng)前在我的 home 目錄--'/home/tom'中。
'root'的提示符:
[root@belbo root]#
除了不同的用戶名外,提示符號由'$'變成了'#'。根據(jù) Bourne shell 的傳統(tǒng),普通用戶的提示符以'$'結(jié)尾,而超級用戶用'#'。提示符的每個(gè)部分都可以定制,您在后面將有更深的了解。
要運(yùn)行命令的話,您只要在提示符后敲進(jìn)命令,然后在按 鍵。shell將在其路徑中(詳情見后)搜索這個(gè)命令,找到以后就運(yùn)行,并在終端里輸出相應(yīng)的結(jié)果(如果有的話),命令結(jié)束后,再給出新的提示符:
[tom@belbo tom]$ whoami
tom
[tom@belbo tom]$
當(dāng)您敲 ENTER 時(shí),光標(biāo)(cursor)在哪里并不要緊,因?yàn)?shell 總是會整行地讀取。
基本的命令有:'ls'(list directory ,列出目錄內(nèi)容)、'cp'(copy ,復(fù)制)、'mv'(move / rename ,移動/重命名),'cd '(change directory ,改變目錄),這些命令后面都可以跟上一幫可選項(xiàng),這方面 man page 有詳細(xì)的介紹(man ls, man mv 等等)。
下面簡單介紹一下幾個(gè)術(shù)語(terminology)。
命令可能帶一些可選項(xiàng)(options)、參數(shù)(arguments):mv -i file dir
其中'-i'是命令'mv'的一個(gè)可選項(xiàng),而'file'和'dir'則是參數(shù)。 所有可選項(xiàng)在該命令的man page 都中有詳細(xì)的介紹(此例中用 man mv),而參數(shù)則由您提供??蛇x項(xiàng)決定命令如何工作,而參數(shù)則用于確定命令作用的目標(biāo)。
【編輯推薦】