Shell 是一個(gè)用 C 語(yǔ)言編寫(xiě)的程序,它是用戶使用 Linux 的橋梁。Shell 既是一種命令語(yǔ)言,又是一種程序設(shè)計(jì)語(yǔ)言。
Shell 是指一種應(yīng)用程序,這個(gè)應(yīng)用程序提供了一個(gè)界面,用戶通過(guò)這個(gè)界面訪問(wèn)操作系統(tǒng)內(nèi)核的服務(wù)。
Ken Thompson的sh 是第一種 Unix Shell,Windows Explorer 是一個(gè)典型的圖形界面 Shell。
Shell 腳本(shell script),是一種為 shell 編寫(xiě)的腳本程序。
業(yè)界所說(shuō)的shell通常都是指shell腳本,但讀者朋友要知道,shell和shell script是兩個(gè)不同的概念。
由于習(xí)慣的原因,簡(jiǎn)潔起見(jiàn),本文出現(xiàn)的"shell編程"都是指shell腳本編程,不是指開(kāi)發(fā) shell 自身。
Shell 編程跟 java、php 編程一樣,只要有一個(gè)能編寫(xiě)代碼的文本編輯器和一個(gè)能解釋執(zhí)行的腳本解釋器就可以了。
Linux 的 Shell 種類眾多,常見(jiàn)的有:
本教程關(guān)注的是 Bash,也就是 Bourne Again Shell,由于易用和免費(fèi),Bash 在日常工作中被廣泛使用。同時(shí),Bash 也是大多數(shù) Linux 系統(tǒng)默認(rèn)的 Shell。
在一般情況下,人們并不區(qū)分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同樣也可以改為#!/bin/bash。
#!告訴系統(tǒng)其后路徑所指定的程序即是解釋此腳本文件的 Shell 程序。
打開(kāi)文本編輯器(可以使用 vi/vim 命令來(lái)創(chuàng)建文件),新建一個(gè)文件 test.sh,擴(kuò)展名為 sh(sh代表shell),擴(kuò)展名并不影響腳本執(zhí)行,見(jiàn)名知意就好,如果你用 php 寫(xiě) shell 腳本,擴(kuò)展名就用 php 好了。
輸入一些代碼,第一行一般是這樣:"#!" 是一個(gè)約定的標(biāo)記,它告訴系統(tǒng)這個(gè)腳本需要什么解釋器來(lái)執(zhí)行,即使用哪一種 Shell。
echo 命令用于向窗口輸出文本。
將上面的代碼保存為 test.sh,并 cd 到相應(yīng)目錄:
chmod +x ./test.sh #使腳本具有執(zhí)行權(quán)限 ./test.sh #執(zhí)行腳本
注意,一定要寫(xiě)成 ./test.sh ,而不是 test.sh ,運(yùn)行其它二進(jìn)制的程序也一樣,直接寫(xiě) test.sh ,linux 系統(tǒng)會(huì)去 PATH 里尋找有沒(méi)有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的當(dāng)前目錄通常不在 PATH里,所以寫(xiě)成 test.sh 是會(huì)找不到命令的,要用 ./test.sh 告訴系統(tǒng)說(shuō),就在當(dāng)前目錄找。
這種運(yùn)行方式是,直接運(yùn)行解釋器,其參數(shù)就是 shell 腳本的文件名,如:
/bin/sh test.sh /bin/php test.php
這種方式運(yùn)行的腳本,不需要在第一行指定解釋器信息,寫(xiě)了也沒(méi)用。
更多建議: