Unix Linux下的Shell命令解釋程式

2022-09-14 06:48:10 字數 3443 閱讀 5974

unix的shell是作為作業系統的最外層,也稱外殼。它有以下幾種身份:

作為命令語言:為使用者提供使用作業系統的介面,使用者利用該介面與機器互動;

作為程式語言:使用者可以利用多條shell命令構成乙個檔案,稱為shell檔案或shell過程;

作為shell命令解釋程式:用於對從標準輸入或檔案中讀入的命令進行解釋執行。

本章主要介紹shell命令語言。

一 簡單命令

簡單命令是乙個能完成某種功能的目標程式的名字,按功能將命令分為如下五大類:

(1)進入與退出系統

進入系統也成為註冊,使用者須與系統管理員商定乙個唯一的使用者名稱,管理員用該名字在系統檔案樹上,為使用者建立乙個子目錄樹的根節點。開啟終端後,螢幕上會出現login:提示,鍵入後系統會詢問使用者口令,通過檢查後,使用者便能進入系統。

當使用者用完系統後,應向系統報告自己不再往系統裝入任何處理要求,系統得知後,便馬上為使用者記賬,清除使用者的使用環境。在多使用者情況下,通過ctrl-d可以重新供另一使用者登入。

使用者的進入與退出個過程,是由系統直接呼叫login及logout程式完成的。

(2)檔案操作命令

a. 顯示檔案內容命令cat

$cat filename1 filename2 ...

b. 複製檔案副本命令cp

$cp source target

c. 修改檔名命令mv

$mv oldname newname

d. 撤銷檔案命令rm

$rm filename1 filename2 ...

e. 確定檔案型別命令file

$file filename1 filename2 ...

(3)目錄操作命令

a. 建立目錄mkdir

$ mkdir dirname1 dirname2 ...

b. 撤銷目錄rmdir

$ rmdir dirname1 dirname2 ...

c. 改變工作目錄cd

d. 改變對檔案的訪問方式chmod

格式:chmod user op-code permission filename

其中,user用於指明訪問者的身份,可以是使用者自己、使用者組、所有其他使用者及全部,分別用u、g、o和a表示;op-code是操作碼,分別用+、-及=表示增加、消除及賦予訪問者某種權利;permission則是分別用r、w及x表示讀、寫及執行許可,如命令:

chmod go-w temp

表示消除使用者組和其他所有使用者對檔案temp的寫許可。

(4)系統詢問命令

a. 訪問當前日期和時間命令date,若在命令後給出引數,則date程式把引數作為重置系統時鐘的時間;

b. 詢問系統當前使用者的命令who,它將列出當前每乙個處在系統中的使用者的註冊名、終端名和註冊進入時間,並按終端標誌的字母順序排序,

使用者可用who命令了解系統的當前負荷,以及核實登陸使用者的註冊名、終端名資訊等;

c. 顯示當前目錄路徑名的命令pwd

二 重定向與管道命令

(1)重定向命令

在unix系統中,系統定義了三個檔案,其中有兩個分別稱為標準輸入和標準輸出檔案,各對應於終端鍵盤輸入和終端螢幕輸出。它們是在使用者註冊時,由login程式開啟。這樣,使用者程式執行時,隱含的標準輸入是鍵盤輸入,標準輸出是螢幕顯示。如果使用者想要改變輸入或輸出檔案,即標準輸入與標準輸出的重定向,可用重定向符「<」和「>」實現輸入和輸出轉向。如:

$ cat file1 > file2 表示把檔案file1的內容列印輸出到檔案file2上

$ wc < file3 表示對file3中讀出的行中的字和字元進行計數

此外,cat file4>>file2表示將file4的內容附加到現有檔案file2的末尾,它與cat file1 file4>>file2的效果是一樣的。

在乙個命令列中,可以同時改變輸入與輸出,如:

a.outfile0 表示在可執行檔案a.out執行時,將從檔案file1中提取資料,同時把a.out的執行結果資料輸出到檔案file0中。

(2)管道命令

用符號"|"來連線兩條命令,使前一條命令的輸出作為後一條命令的輸入,如

cat file | wc 使cat命令把file中的資料作為wc命令的輸入。

其機制是系統將為管道建立乙個作為通訊通道的pipe檔案,這時cat命令的輸出既不出現在終端上,也不存在某中間檔案中,而是由unix系統來緩衝第一條命令的輸出,並作為第二條命令的輸入。這種用管道線所連線的命令之間是單向、同步執行的。

三  通訊命令

unix系統為使用者提供了實時和非實時兩種通訊方式,分別用write及mail命令。聯機使用者也可以根據自己的當前情況,決定是否接受其他使用者與其進行通訊的要求。

(1)郵箱通訊命令mail

mail採用信箱通訊方式,是unix各使用者進行非互動式通訊的工具。發信者把要傳送的訊息寫成信件,「郵寄」到對方的信箱中。用mail進行通訊時,不要求接收者利用終端與傳送者會話。即,在發信者傳送資訊時,雖然接收者在系統中註冊過,但允許他此時沒有系統;或者雖在使用系統,但拒絕接收任何資訊。mail命令在用於發信時,把接收者的註冊名當做引數打入後,便可在新行開始鍵入信件正文,最後仍在乙個新行上用"."來結束信件或用"^d"退出mail程式。

接收者也用mail命令讀取信件,命令格式:

mail [-r][-q][-p][-file][-f persons]

其中選項r、q、p、file分別表示:按先進先出順序顯示各信件的內容;再輸入終端字元後,退出mail程式但不改變信箱的內容;一次性顯示信箱全部內容而不帶詢問;把指定檔案當作信件來顯示。

(2)對話通訊命令write

write命令使得使用者與當前在系統中的其他使用者直接進行聯機通訊。命令格式:

write user[ttyname]

當接收者只有乙個終端時,終端名可以預設。當接收者的終端被允許接收訊息時,螢幕提示會通知接收者源使用者名稱及其所用終端名。

(3)允許或拒絕接收訊息命令mesg

mesg命令格式:

mesg[-n][-y]

選項n表示拒絕接收訊息,選項y表示恢復對方的寫許可,即允許接收訊息。不帶自變數的mesg命令只報告當前狀態而不改變它。

四 後台命令

在命令後加上「&」號,是告訴shell將該命令放在後台執行,以便使用者在前台繼續鍵入其他命令。此時,標準輸入檔案會自動地從終端定向到乙個被稱為"/dev/null"的空檔案中。若shell未重定向標準輸入,那麼shell和後台程序都會同時從終端進行讀入,此時使用者鍵入終端的字元就不能確定被送到哪乙個程序中,因而必須為後台執行的命令重定向標準輸入,以使鍵入的字元都被送到shell程序。

UNIX LINUX下 M 的問題

unix和windows間的文字檔案轉換 在用電報通訊的年代,人們發明了一種用7bits把常用的英文和標點編碼的方法 這就是至今還在計算機世界應用的ascii。電報機每當列印到一行結尾時便需要 跳進下一行 並 回到第一格 因此ascii有lf line feed,0 0a 和cr carriage ...

unix linux下主要的I O模型

unix linux下主要的4種i o模型 1,阻塞i o 最常用,最簡單,效率最低 2,非阻塞i o 可防止程序阻塞在i o操作上,需要輪詢。3,i o多路復用 允許同時對多個i o進行控制 4,訊號驅動i o 一種非同步通訊模型。阻塞i o模式 阻塞i o是最普遍使用的i o模式,大部分的程式使...

設定 Unix,Linux環境下的NLS LANG

設定 nls lang 變數 1 正確配置 lc all 引數 2 配置 telnet ssh securecrt 客戶端的字符集 linux中可以用locale命令來檢視 nls lang設定,如下例所示 root hxzg locale lang en us.utf 8 lc ctype en ...