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