X皮書之shell熱身
序
最近想看看shell方面的內容,看到有一篇介紹shell的文檔,不錯。遂按照自己的方式整理如下,與大家分享。
介紹
如果你想適當精通一些系統管理知識,那么掌握shell腳本應該是最基本的。即使你可能并不打算真正的編寫一些腳本。
曾經有人問我,你學那么多的編程語言,你覺得語言有那么重要嗎?我現在用下面的話告訴你:
沒有程序語言是完美的,甚至沒有一個唯一最好的語言,只有對于特定目的,比較合適和不適合的程序語言。—— Herbert Mayer
腳本不難
學習如何編寫shell腳本并不是一件很困難的事,因為腳本可以分為很小的塊,并且相對于shell特性的操作,只需要學習很小的一部分就可以了。
語法是簡單并且直觀的,編寫腳本很像是在命令行上把一些相關命令和工具鏈接起來,并且只有很少的一部分規則需要學習。它可以通過將系統調用,公共程序,工具和編譯過的的二進制程序粘合在一起來建立應用。
絕大部分腳本第一次就可以正常的工作,而且即使調試一個長一些的腳本也是很直觀的。
帶著一個"#!"出發
一個shell腳本其實就是將一堆系統命令列在一個文件中。
最基本的用處:
在你每次輸入這些特定順序的命令時可以減少敲一些字。
如:清除/home/www/shell/log下的log文件
一個改良的腳本
現在,讓我們看一下一個真正意義上的腳本,而且我們可以走的更遠...
當然上面的#!也可以被忽略,不過這樣你的腳本就只能是一些命令的集合,不能夠使用shell內建的指令了。比如變量,如果不能使用變量的話,當然這也就失去了腳本編程的意義了。
注意:
這個例子鼓勵你使用模塊化的方式來編寫腳本,平時也要注意收集一些零碎的代碼,這些零碎的代碼可能用在你將來編寫的腳本中。——這樣你就可以通過這些代碼片段來構造一個較大的工程用例。
調用一個腳本
編寫完腳本之后,你可以使用sh scriptname,或者bash scriptname來調用它。
不推薦使用sh scriptname,因為這禁用了腳本從stdin中讀數據的功能。
更方便的方法是讓腳本具有可執行權限,然后直接運行腳本文件,如./scriptname
通過chmod修改腳本權限
chmod 555 scriptname
或
chmod +rx scriptname
chmod u+rx scriptname
|
什么時候不用shell
1、資源密集型的任務,尤其在需要考慮效率時(比如排序,hash等等)
2、需要處理大任務的數學操作,尤其是浮點運算、精確運算或者復雜的算術運算(這種情況一般使用C或者C++)
3、有跨平臺移植技術(一般使用C或Java)
4、復雜的應用,在必須使用結構化編程的時候(需要檢查變量的類型檢查、函數原型等等)
5、對于影響系統全局性的關鍵任務應用
6、對于安全有很高要求的任務,比如你需要一個健壯的系統來防止入侵、破解、惡意破壞等
7、項目連串的依賴各個部分組成
8、需要大規模的文件操作
9、需要多維數組的支持
10、需要數據結構的支持,比如鏈表
11、需要產生或操作圖形化界面GUI
12、需要直接操作系統硬件
13、需要I/O或socket結構
14、需要使用庫或者遺留下來的老代碼的接口
15、私人的、閉源的應用(shell腳本把代碼就放在文本文件中,全世界都能看到)
原文鏈接:http://www.cnblogs.com/baochuan/archive/2012/10/23/2735510.html