Shell 命令解釋系統

2021-08-23 14:40:39 字數 958 閱讀 4984

在 unix 世界中有眾多的 shell 命令解釋程式,它們各有自己的特色和特長。自己 編寫乙個 shell

命令解釋程式不但可以定製特定的介面功能也可以深入了解和挖掘核心的 各種技術。

問題

實現乙個能處理前後臺執行命令的 shell

實現乙個帶有管道功能的 shell

實現乙個能處理 i/o 重定向的 shell

實現乙個能在一行上處理多條命令的 shell

shell 命令解釋程式中元字元的處理是 shell 中乙個強大的功能,利用對各種元字元的

不同解釋可以充分挖掘出核心的各種強大的潛能。例如實驗教材中提到的利用 「&」 符號

啟動併發的後台程序,利用 「<」、」>」 符號啟動 i/o 重定向,利用 「|」 啟動管道讀寫等

等。我們也可以實驗實現一些其他的元字元功能,如 「*」 萬用字元,」;」 連線符等等。

關於管道,可有兩種實現形式,即無名管道和有名管道。無名管道使用記憶體緩衝實現管

道機制;有名管道使用管道檔案實現管道機制,注意在程式執行之前先用 shell 命令建立

兩個命名管道

設計說明

讀取環境變數,分割環境變數的各個路徑。使用者輸入命令後,

對命令進行解析,根據不同的命令型別進行相應的處理。若命令中有『 &』符號則表示後台執行,『 <』符號表示輸入重定向,

『 >』符號表示輸出重定向,『 |』符號表示管道,『;』符號用

來多條命令之間隔開。

對於輸入輸出重定向,擷取重定向的檔案;對於管道,分

別管道左邊和右邊的命令;對於『;』多命令符號,切割各條命

令。解析各條命令,獲取命令名和引數。取得命令所在的絕對路徑,建立子程序用來執行命令。如果為管道,則在子程序寫入管道,在父程序從管道讀取。如果有後台執行符號『 &』則父程序不用等待子程序執行完,否則等待子程序執行完。

shell命令直譯器

雖然從事linux開發很多年,但作為乙個linux自學的小白沒少走彎路,就拿linux shell來講,一直沒理解它的意思,只知道它是乙個 命令直譯器 然後就沒有然後了.最近在製作根檔案系統,涉及到登入帳號和密碼的問題,在 etc inittabl檔案裡發現控制台登入命令後面帶了乙個 bin sh ...

Shell程式設計命令解釋

0 當前指令碼檔名 n 第n個引數 引數個數 整個引數資料形式傳遞所有引數 單個引數資料形式傳遞所有引數 獲取上乙個命令的退出狀態 0 1 獲取函式返回值 顯示字串的長度 從左邊0開始計數到start,擷取長度為length的字串,若 length 省略擷取剩下的字串 從右邊1開始計數到start,...

「shell」是命令解釋程式

shell 是命令解釋程式。在unix平台上,它通常是程式,如sh csh或bash。在windows平台下,等效程式為command.com或cmd.exe,通常執行在控制台視窗中。輸入示例中顯示的命令或語句時,不要輸入示例中給出的提示符。shell 指明命令將從註冊外殼程式中執行,mysql 指...