1.背景介紹
Shell本身是一個用C語言編寫的程序,它是用戶使用Linux的橋梁。Shell既是一種命令語言,又是一種程序設計語言。作為命令語言,它交互式地解釋和執(zhí)行用戶輸入的命令;作為程序設計語言,它定義了各種變量和參數,并提供了許多在高級語言中才具有的控制結構,包括循環(huán)和分支。
它雖然不是Linux系統(tǒng)核心的一部分,但它調用了系統(tǒng)核心的大部分功能來執(zhí)行程序、建立文件并以并行的方式協(xié)調各個程序的運行。
因此,對于用戶來說,shell是最重要的實用程序,深入了解和熟練掌握shell的特性極其使用方法,是用好Linux系統(tǒng)的關鍵.
2.知識剖析
Shell是一種腳本語言,就必須有解釋器來執(zhí)行這些腳本
我們常說有多少種Shell,其實說的是Shell腳本解釋器
bash是Linux系統(tǒng)默認使用的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的縮寫,內部命令一共有40個。
Linux使用它作為默認的shell是因為它有諸如以下的特色:
可以使用方向鍵查閱和快速輸入并修改命令。
自動通過查找匹配的方式給出以某字符串開頭的命令。
包含了自身的幫助功能,你只要在提示符下面鍵入help就可以得到相關的幫助。
3.常見問題
如何編寫一個shell(bash)腳本
為什么要編寫shell腳本
4.解決方案
Shell有兩種執(zhí)行命令的方式:
交互式(Interactive):解釋執(zhí)行用戶的命令,用戶輸入一條命令,Shell就解釋執(zhí)行一條。
批處理(Batch):用戶事先寫一個Shell腳本(Script),其中有很多條命令,讓Shell一次把這些命令執(zhí)行完,而不必一條一條地敲命令。
Shell腳本也有變量和流程控制語句,但Shell腳本是解釋執(zhí)行的,不需要編譯,Shell程序從腳本中一行一行讀取并執(zhí)行這些命令,相當于一個用戶把腳本中的命令一行一行敲到Shell提示符下執(zhí)行。
簡單性:Shell是一個高級語言;通過它,你可以簡潔地表達復雜的操作。
可移植性:使用POSIX所定義的功能,可以做到腳本無須修改就可在不同的系統(tǒng)上執(zhí)行。
開發(fā)容易:可以在短時間內完成一個功能強大又好用的腳本。
5.編碼實戰(zhàn)
6.擴展思考
還有哪些腳本解釋器
哪些情況下不適合使用Shell腳本
sh 由Steve Bourne開發(fā),是Bourne Shell的縮寫,各種UNIX系統(tǒng)都配有sh。
ash shell 是由Kenneth Almquist編寫的,Linux中占用系統(tǒng)資源最少的一個小shell,它只包含24個內部命令,因而使用起來很不方便。
csh 是Linux比較大的內核,它由以William Joy為代表的共計47位作者編成,共有52個內部命令。該shell其實是指向/bin/tcsh這樣的一個shell,也就是說,csh其實就是tcsh。
ksh 是Korn shell的縮寫,由Eric Gisin編寫,共有42條內部命令。該shell最大的優(yōu)點是幾乎和商業(yè)發(fā)行版的ksh完全兼容,這樣就可以在不用花錢購買商業(yè)版本的情況下嘗試商業(yè)版本的性能了。
但是,考慮到Shell腳本的命令限制和效率問題,下列情況一般不使用Shell:
1.資源密集型的任務,尤其在需要考慮效率時(比如,排序,hash等等)。
2.需要處理大任務的數學操作,尤其是浮點運算,精確運算,或者復雜的算術運算(這種情況一般使用C++或FORTRAN 來處理)。
3.有跨平臺(操作系統(tǒng))移植需求(一般使用C 或Java)。
4.復雜的應用,在必須使用結構化編程的時候(需要變量的類型檢查,函數原型,等等)。
5.對于影響系統(tǒng)全局性的關鍵任務應用。
6.對于安全有很高要求的任務,比如你需要一個健壯的系統(tǒng)來防止入侵、破解、惡意破壞等等。
7.項目由連串的依賴的各個部分組成。
8.需要大規(guī)模的文件操作。
9.需要多維數組的支持。
10.需要數據結構的支持,比如鏈表或數等數據結構。
11.需要產生或操作圖形化界面 GUI。
12.需要直接操作系統(tǒng)硬件。
13.需要 I/O 或socket 接口。
14.需要使用庫或者遺留下來的老代碼的接口。
15.私人的、閉源的應用(shell 腳本把代碼就放在文本文件中,全世界都能看到)。
7.參考文獻
①百度
②http://www.jb51.net/article/52374.htm
今天的分享就到這里啦,歡迎大家點贊、轉發(fā)、留言、拍磚~
技能樹.IT修真院
“我們相信人人都可以成為一個工程師,現在開始,找個師兄,帶你入門,掌控自己學習的節(jié)奏,學習的路上不再迷茫”。
這里是技能樹.IT修真院,成千上萬的師兄在這里找到了自己的學習路線,學習透明化,成長可見化,師兄1對1免費指導??靵砼c我一起學習吧~
www.jnshu.com/login/1/14708688