|
初識(shí)Shell 現(xiàn)在以 Ubuntu 為例介紹Shell安裝: $ sudo aptitude install -y retext git nodejs npm $ sudo ln -fs /usr/bin/nodejs /usr/bin/node $ sudo aptitude install -y calibre fonts-arphic-gbsn00lp $ sudo npm install gitbook-cli -g 下載 $ git clone https://github.com/tinyclub/open-shell-book.git $ cd open-shell-book/ 編譯 $ gitbook build // 編譯成網(wǎng)頁(yè) $ gitbook pdf // 編譯成 pdf 關(guān)于Shell Shell提供了用戶與內(nèi)核進(jìn)行交互操作的一種接口。它把用戶輸入的命令并把它送入內(nèi)核去執(zhí)行。 實(shí)際上Shell是一個(gè)命令解釋器,它解釋用戶輸入的命令并且把它們送到內(nèi)核。非僅如此,Shell有自己的編程語(yǔ)言用于對(duì)命令的編輯,它允許用戶編寫(xiě)由shell命令組成的程序。Shell編程語(yǔ)言具有普通編程語(yǔ)言的很多特點(diǎn),其也有循環(huán)結(jié)構(gòu)和分支控制結(jié)構(gòu)等,用這種編程語(yǔ)言編寫(xiě)的Shell程序與其他應(yīng)用程序具有同樣的效果。 每個(gè)Linux系統(tǒng)的用戶可以擁有他自己的用戶界面或Shell,用以滿足他們自己專門(mén)的Shell需要。 Shell 編程跟java、php等編程一樣,只要有一個(gè)能編寫(xiě)代碼的文本編輯器和一個(gè)能解釋執(zhí)行的腳本解釋器就可以了。 Linux的Shell種類眾多,常見(jiàn)的有: ·Bourne Shell(/usr/bin/sh或/bin/sh) ·Bourne Again Shell(/bin/bash) ·C Shell(/usr/bin/csh) ·K Shell(/usr/bin/ksh) ·Shell for Root(/sbin/sh) 在shell中可以定義函數(shù)。函數(shù)實(shí)際上也是由若干條shell命令組成的,因此它與shell程序形式上是相似的,它非一個(gè)單獨(dú)的進(jìn)程,而是shell程序的一部分。函數(shù)由兩部分組成:函數(shù)名和函數(shù)體。 函數(shù)定義的格式為: 函數(shù)名() { 命令集合 } 或者 function 函數(shù)名() { 命令集合 } Shell函數(shù)和shell程序比較相似,它們的區(qū)別在于: Shell程序在子Shell中運(yùn)行,而Shell函數(shù)在當(dāng)前Shell中運(yùn)行。因此在當(dāng)前Shell中可以看到Shell函數(shù)對(duì)變量的修改。 現(xiàn)在關(guān)注的是 Bash,也就是 Bourne Again Shell,由于易用和免費(fèi),Bash在日常工作中被廣泛使用。同時(shí),Bash也是大多數(shù)Linux系統(tǒng)默認(rèn)的Shell。 #!告訴系統(tǒng)其后路徑所指定的程序即是解釋此腳本文件的Shell程序。 我們現(xiàn)在寫(xiě)一個(gè)shell腳本,打開(kāi)文本編輯器,新建一個(gè)文件first.sh,擴(kuò)展名為sh代表shell,擴(kuò)展名可以見(jiàn)名知意,如果你用php寫(xiě)shell 腳本,擴(kuò)展名就用php好了。 輸入一些代碼: #!/bin/bash echo "Hello Shell !" "#!" 是一個(gè)約定的標(biāo)記,它告訴系統(tǒng)這個(gè)腳本需要什么解釋器來(lái)執(zhí)行,即使用哪一種Shell。 echo命令用于向窗口輸出文本。 運(yùn)行Shell腳本有兩種方法: 作為可執(zhí)行程序 將上面的代碼保存 chmod +x ./first.sh #使腳本具有執(zhí)行權(quán)限 ./first.sh #執(zhí)行腳本 注意,一定要寫(xiě)成./first.sh,而非first.sh,運(yùn)行其它二進(jìn)制的程序也一樣,直接寫(xiě)first.sh,linux系統(tǒng)會(huì)去PATH里尋找有沒(méi)有叫first.sh的,而只有/bin, /sbin, /usr/bin,/usr/sbin等在PATH里,你的當(dāng)前目錄通常非在PATH里,所以別寫(xiě)成first.sh,要用./first.sh告訴系統(tǒng)說(shuō),就在當(dāng)前目錄找。 作為解釋器參數(shù) 這種運(yùn)行方式是,直接運(yùn)行解釋器,其參數(shù)就是shell腳本的文件名,如: /bin/sh first.sh /bin/php first.php 這種方式運(yùn)行的腳本,無(wú)需在第一行指定解釋器信息,寫(xiě)了也沒(méi)用。 |
|
|
來(lái)自: 大文豪賢斌學(xué)長(zhǎng) > 《待分類》