本文是Linux Shell系列教程的第(一)篇,更多shell教程請看:Linux Shell系列教程 想要學習linux,shell知識必不可少,今天就給大家來簡單介紹下shell的基本知識。 Shell簡介 Shell自身是一個用C語言編寫的程式,是用戶來使用Unix或Linux的橋梁,用戶的 ...
本文是Linux Shell系列教程的第(一)篇,更多shell教程請看:Linux Shell系列教程
想要學習linux,shell知識必不可少,今天就給大家來簡單介紹下shell的基本知識。
Shell簡介
Shell自身是一個用C語言編寫的程式,是用戶來使用Unix或Linux的橋梁,用戶的大部分工作都需要通過Shell來完成。只有熟練使用shell,才能熟練掌握linux。
可以說:Shell既是一種命令語言,又是一種程式設計語言。
作為命令語言,它可以互動式地解釋和執行用戶輸入的命令;而作為程式設計語言,它可以定義各種變數和參數,並提供了許多在高級語言中才具有的控制結構,包括迴圈和分支。
Shell雖然不是Unix/Linux系統內核的一部分,但它調用了系統核心的大部分功能來執行程式、建立文件並以並行的方式來協調各個程式的運行。
因此,對於用戶來說,shell是最重要的實用程式,深入瞭解和熟練掌握shell的特性極其使用方法,是用好Unix/Linux系統的關鍵。
可以說,shell使用的熟練程度反映了用戶對Unix/Linux使用的熟練程度。
Shell有兩種執行命令的方式:
- 互動式(Interactive):解釋執行用戶的命令,用戶輸入一條命令,Shell就解釋執行一條。
- 批處理(Batch):用戶事先寫一個Shell腳本(Script),其中有很多條命令,讓Shell一次把這些命令執行完,而不必一條一條地敲命令。
Shell腳本和編程語言很相似,也有變數和流程式控制制語句,但Shell腳本是解釋執行的,不需要編譯,Shell程式從腳本中一行一行讀取並執行這些命令,相當於一個用戶把腳本中的命令一行一行敲到Shell提示符下執行。
但是,Shell初學者請註意,在平常應用中,不要用 root 帳號運行 Shell 。作為普通用戶,不管您有意還是無意,都無法破壞系統;但如果是 root,那就不同了,只要敲幾個字母,就可能導致災難性後果。
常用的Shell類型
上面提到過,Shell是一種腳本語言,那麼,就必須有解釋器來執行這些腳本。
Unix/Linux上常見的Shell腳本解釋器有bash、sh、csh、ksh等,習慣上把它們稱作一種Shell。
我們常說有多少種Shell,其實說的是Shell腳本解釋器。
下麵來介紹下幾種常用的Shell。
bash
bash是Linux標準預設的shell,本教程也基於bash講解。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的縮寫,內部命令一共有40個。
Linux使用它作為預設的shell是因為它有諸如以下的特色:
可以使用類似DOS下麵的doskey的功能,用方向鍵查閱和快速輸入並修改命令。
自動通過查找匹配的方式給出以某字元串開頭的命令。
包含了自身的幫助功能,你只要在提示符下麵鍵入help就可以得到相關的幫助。
sh
sh 由Steve Bourne開發,是Bourne Shell的縮寫,sh 是Unix 標準預設的shell。
ash
ash shell 是由Kenneth Almquist編寫的,Linux中占用系統資源最少的一個小shell,它只包含24個內部命令,因而使用起來很不方便。
csh
csh 是Linux比較大的內核,它由以William Joy為代表的共計47位作者編成,共有52個內部命令。該shell其實是指向/bin/tcsh這樣的一個shell,也就是說,csh其實就是tcsh。
ksh
ksh 是Korn shell的縮寫,由Eric Gisin編寫,共有42條內部命令。該shell最大的優點是幾乎和商業發行版的ksh完全相容,這樣就可以在不用花錢購買商業版本的情況下嘗試商業版本的性能了。
註意:bash是 Bourne Again Shell 的縮寫,是linux標準的預設shell ,它基於Bourne shell,吸收了C shell和Korn shell的一些特性。bash完全相容sh,也就是說,用sh寫的腳本可以不加修改的在bash中執行。
總結
本文主要介紹了Shell的功能以及幾個常用的shell類型,主要讓大家建立起對Shell的整體印象,接下來,Linux大學網將給大家帶來關於Shell命令一系列詳細教程,希望對大家有所幫助。
更多shell教程請看:Linux Shell系列教程
本文固定鏈接:linux大學網--Linux Shell系列教程之(一)Shell簡介