標籤:應用程式 解譯器 linux 管道 定向
linux中shell是一個特殊的應用程式。它介於系統的核心與使用者之間。充當命令“解譯器”的作用角色。負責接收使用者輸入的操作指令,並進行解釋。將需要執行的操作傳遞給核心。並輸出執行結果;
下面我們來看一下當前系統所支援的shell的種類:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/4D/96/wKioL1RUM_nich3bAAD5PvaLXpY860.jpg" title="sell.jpg" alt="wKioL1RUM_nich3bAAD5PvaLXpY860.jpg" />其中/bin/shell 是目前大多數linux中採用的預設shell。我們主要學習bash、
我們來寫第一個指令檔用作測試。
vim first.sh
cd /boot/
pwd
ls -lh *
chmod +x first.sh
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/4D/96/wKioL1RUNW7AMbqzAAL3l-Y8G4k812.jpg" title="aa.jpg" alt="wKioL1RUNW7AMbqzAAL3l-Y8G4k812.jpg" />
shell指令碼標準的橋本結構:
vim first.sh
#!/bin/bash
#this is my first shell.
cd /boot
echo "當前的目錄位於"
pwd
echo "其中以a開頭的檔案包括:"
ls -lh a*
chmod +x first.sh 給予其執行的許可權
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/4D/96/wKioL1RUN0ugCAaAAACzQDMsIao927.jpg" title="QQ圖片20141101092722.jpg" alt="wKioL1RUN0ugCAaAAACzQDMsIao927.jpg" />
也可以通過sh.first 或者. first.sh 來執行指令碼。。
重新導向和管道操作:
重新導向輸出使用 > 或者 >> 操作符號。> 用於覆蓋 >> 多用於追加使用
例如:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/4D/96/wKiom1RUOBfxUVpMAABLlYVclX0640.jpg" title="QQ圖片20141101093216.jpg" alt="wKiom1RUOBfxUVpMAABLlYVclX0640.jpg" />
追加的應用:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/4D/96/wKiom1RUOI2zMMFUAABrJKw-PcE851.jpg" title="QQ圖片20141101093415.jpg" alt="wKiom1RUOI2zMMFUAABrJKw-PcE851.jpg" />
重新導向輸入:重新導向輸入使用"<"操作符
可以使一些互動式操作過程能夠讀取檔案來完成:
vim pass.txt
123.com
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/4D/96/wKiom1RUOeazNPdCAABcQoPD7dU030.jpg" title="QQ圖片20141101094003.jpg" alt="wKiom1RUOeazNPdCAABcQoPD7dU030.jpg" />
將密碼直接定向到hujianli使用者裡面
錯誤重新導向:
例如:將tar命令備份時出現的錯誤資訊儲存到error.log檔案中:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/4D/96/wKiom1RUOtPhv-RMAAC0kqrfw-g992.jpg" title="aa.jpg" alt="wKiom1RUOtPhv-RMAAC0kqrfw-g992.jpg" />
使用 2> 時會像 > 一樣覆蓋掉檔案。若要追加內容而不是覆蓋掉檔案,就要用 2>> 操作符。
例如:自動編譯指令碼。。把輸出的資訊定義到/dev/null裡面。。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/4D/96/wKiom1RUPPqyvg_-AAC4NyJ4tbU647.jpg" title="aa.jpg" alt="wKiom1RUPPqyvg_-AAC4NyJ4tbU647.jpg" />
管道操作:
“|” 位於| 左側命令輸出的結果回作為右側命令的輸入(出來對象),同一命令中可有多條管道
在shell中|通常用作過濾所需要的關鍵資訊:
例如:編寫一個指令碼,只顯示passwd中的使用者名稱和登入shell列:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/4D/96/wKiom1RUPqeiIIdrAADvQhWVLzw320.jpg" title="aa.jpg" alt="wKiom1RUPqeiIIdrAADvQhWVLzw320.jpg" />
其中awk的作用是把:當做分隔,輸出$1,$7的字串。 -F用作指定分隔字元號:未指定是用空格標示分隔。
再列舉一個:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/4D/97/wKiom1RUQF6Qh_T_AAIZwzeBtxA346.jpg" title="aa.jpg" alt="wKiom1RUQF6Qh_T_AAIZwzeBtxA346.jpg" />grep “/$”代表/分區 對象 awk ‘{print $5}’代表空格作為分隔,第5個
例如:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/4D/97/wKiom1RUQhujc9tiAADeuJ74w-4510.jpg" title="aa.jpg" alt="wKiom1RUQhujc9tiAADeuJ74w-4510.jpg" />
應用變數的值:
例如:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/4D/96/wKioL1RUQ0CwblCkAAEhNmaQpq0325.jpg" title="aa.jpg" alt="wKioL1RUQ0CwblCkAAEhNmaQpq0325.jpg" />
雙引號:
hujianli = “jianli”
echo $hujianli
jianli
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/4D/96/wKioL1RURCHD46UKAAFTBMQxVAk699.jpg" title="aa.jpg" alt="wKioL1RURCHD46UKAAFTBMQxVAk699.jpg" />
單引號,不能解釋其他變數,單引號裡面的所有內容都是原樣輸出的。。
這裡不做示範。
反撇號:主要將``裡面的內容輸出顯示。。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/4D/97/wKiom1RURR3RPi47AAGCG0hsPIs298.jpg" title="aa.jpg" alt="wKiom1RURR3RPi47AAGCG0hsPIs298.jpg" />
read 是bash的內建命令,主要給變數賦值。例如:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/4D/97/wKiom1RUReGDrLA-AADJgKO4OH4075.jpg" title="aa.jpg" alt="wKiom1RUReGDrLA-AADJgKO4OH4075.jpg" />
今天先複習這麼一點,改天繼續。。。。shell指令碼,
本文出自 “斷腸人在天涯” 部落格,謝絕轉載!
linux中shell指令碼的學習(一)