Linux shell編程(一):shell是什麼?

什麼是shell?

簡單來說,shell是一個執行命令的宏處理(macro processor)器。
術語宏處理器(macro processor)是指將文本和符號擴展到創建更大的表達式的功能。

在linux系統中shell介於Linux內核與終端用戶之間,讓用戶通過可以shell來操作內核。

Shell是系統的用戶界面,提供了用戶與內核進行交互操作的一種接口。它接收用戶輸入的命令並把它送入內核去執行。

Unix shell可以作爲解釋器(interpreter)和編程語言使用。

當作爲命令解釋器使用時。shell爲用戶接口提供了豐富的GNU命令集,如 cd dir ls find ...等實用的命令。

當作爲編程語言時。shell特性允許將多個命令組合在一起,可以創建包含命令的文件,併成爲命令本身。
這些新命令在諸如“/bin”的目錄中具有與系統命令相同的狀態,允許用戶或組建立自定義環境來自動化它們的常見任務。

Shell可以在交互式模式或非交互式模式下使用。

  • 交互式: 執行命令從鍵盤鍵入
  • 非交互試:執行從文件讀取到命令

shell允許以同步和異步方式執行GNU命令。在接受更多輸入之前,shell將等待同步命令完成;異步命令在讀取和執行其他命令時,繼續與shell並行執行。“重定向”構造允許對這些命令的輸入和輸出進行細粒度控制。此外,shell允許對命令環境的內容進行控制。
shell還提供了一組內置命令(“builtins”),實現功能不可能或不方便通過單獨的實用程序獲得。例如,“cd”、“break”、“continue”和“exec”都不能在shell之外實現,因爲它們直接操縱shell本身。“history”、“getopts”、“kill”或“pwd”的內置程序可以在不同的實用程序中實現,但它們更便於作爲構建命令使用。後面的部分將描述所有的shell構建。

與其他編程語言相同,shell也提供了變量,流程控制,引用,函數。

shell中的常見名詞

定義 解釋
POSIX 一個基於Unix的開放系統標準系列。Bash主要關注POSIX 1003.1標準的外殼和實用程序部分。
blank 一個空格或者製表符
builtin 由shell本身在內部實現的命令,而不是文件系統中的某個可執行程序。
control operator 流程控制語句,執行控制功能的“令牌”。
exit status 命令返回給它的調用者的值。該值限制爲8位,因此最大值爲255。
field 一個文本單元,它是一個shell擴展的結果。擴展後,當執行一個命令時,結果字段被用作命令名和參數。
filename 用於標識文件的字符串
job 由管道組成的一組過程,以及由它派生的任何進程,它們都在同一個進程組中。
job control 用戶可以有選擇地停止(暫停)並重啓(恢復)進程的機制。
metacharacter 當未被引用時,一個字符將單詞分開。元字符是一個“空白”或下列字符之一。'\', '&', ';','(', ')', '<', or '>'.
name 由字母、數字和下劃線組成的“單詞”,以字母或下劃線開頭。名稱被用作shell變量和函數名。也稱爲“標識符”。
operator “控制操作符”或“重定向操作符”。對於重定向操作符的列表。運算符包含至少一個未被引用的“元字符”。
process group 每個具有相同進程組ID的相關進程的集合。
process group ID 在其生命週期中表示“進程組”的唯一標識符。
reserved word 一個對shell有特殊意義的詞。大多數保留字引入了shell流控制結構,例如“for”和“while”。
return status “退出狀態”的同義詞。
signal 一種機制,通過該機制可以通過系統中發生的事件的內核來通知進程。
special builtin 一個被POSIX標準分類爲特殊的shell內置命令。
token 由shell層考慮單個單元的一系列字符。它要麼是一個“單詞”,要麼是一個“運算符”。
word 由shell作爲單元處理的一系列字符。詞彙可能不包括未引用的“元字符”。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章