linux中shell指令碼的學習(一)

來源:互聯網
上載者:User

標籤:應用程式   解譯器   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指令碼的學習(一)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.