Unix Shell程式編寫方法詳解

來源:互聯網
上載者:User

Shell是什麼?

任何發明都具有供使用者使用的介面。UNIX供使用者使用的介面就是Shell(DOS的command熟悉吧,但UNIX的要強大的多)。

Shell為使用者提供了輸入命令和參數並可得到命令執行結果的環境。

為了不同的需要,UNIX提供了不同的Shell。現在的UNIX大部分都支援BourneShell,以下教程就以BourneShell(Bsh)為例,一步步的領略UNIX Shell的強大功能,佔先其強大魅力,達到更方便靈活的管理、應用UNIX的目的。

1.UNIX核心和Shell的互動方法

啟動UNIX時,程式UNIX(核心)將被調入電腦記憶體,並一直保留在記憶體中直到機器關閉。在引導過程中,程式init將進入後台運行一直到機器關閉。該程式查詢檔案/etc/inittab,該檔案列出了串連終端的各個連接埠及其特徵。當發現一個活動的終端時,init程式調用getty程式在終端上顯示login等登陸資訊。(username和passwd),在輸入密碼後,getty調用login進程,該進程根據檔案/etc/passwd的內容來驗證使用者的身份。若使用者通過身分識別驗證,login進程把使用者的home目錄設定成目前的目錄並把控制交給一系列setup程式。setup程式可以是指定的應用程式,通常setup程式為一個Shell程式,如:/bin/sh 即Bourne Shell(command出來了,呵呵)。

得到控制後,Shell程式讀取並執行檔案/etc/.profile以及.profile。這兩個檔案分別建立了系統範圍內的和該使用者自己的工作環境。最後Shell顯示命令提示字元,如$。(這是以bsh為例,若是csh,為.cshrc,ksh為.kshrc,bash為.bashrc等等) 注不妨把/etc/.profile和.profile看成DOS的autoexec.bat 或config.sys檔案)

當shell退出時,核心把控制交給init程式,該程式重新啟動自動登陸過程。有兩種方法使shell退出,一是使用者執行exit命令,二是核心(例如root用kill命令)發出一個kill命令結束shell進程。shell退出後,核心回收使用者及程式使用的資源。

使用者登陸後,使用者命令同電腦互動的關係為:命令進程--->Shell程式--->UNIX核心--->電腦硬體。當使用者輸入一個命令,如$ls,

Shell將定位其可執行檔/bin/ls並把其傳遞給核心執行。核心產生一個新的子進程調用並執行/bin/ls。當程式執行完畢後,核心取消

該子進程並把控制交給其父進程,即Shell程式。例如執行:

$ps

該命令將會列出使用者正在執行的進程,即Shell程式(下來詳細說說,別急現在)和ps程式。若執行:

$sleep 10 & $ps

其中第一條命令將產生一個在後台執行的sleep子進程。ps命令執行時會顯示出該子進程。

每當使用者執行一條命令時,就會產生一個子進程。該子進程的執行與其父進程或Shell完全無關,這樣可以使Shell去做其他工作。(Shell只是把使用者的意圖告訴核心,然後該幹嘛幹嘛) 現在windows有個計劃任務(在固定的時間,日期自動執行某任務),其實UNIX很早就有這個功能了,也就是所謂的Shell的自動執行。一些UNIX資源,如cron可以自動執行Shell程式而無需使用者的參與,(這個功能好象在/var/spool/crotab目錄裡)。

Crontab 程式對於系統管理員來說是非常有用的。Cron服務用於排程器在特定時間(月、日、周、時、分)運行。我們以root的crontab 為例。根使用者的crontab 檔案放在 /var/spool/crontab/root 中,其格式如下:

(1)  (2)  (3)  (4)  (5)  (6)

0   0   *   *   3   /usr/bin/updatedb

1. 分鐘 (0-60)

2. 小時 (0-23)

3. 日 (1-31)

4. 月 (1-12)

5. 星期 (1-7)

6. 所要啟動並執行程式

2.Shell的功能和特點

1>命令列解釋

2>使用保留字

3>使用Shell元字元(萬用字元)

4>可處理常式命令

5>使用輸入輸出重新導向和管道

6>維護一些變數

7>運行環境控制

8>支援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.