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

什麼是shell?

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

在linux系統中shell介於Linux內核與終端用戶之間,讓用戶經過能夠shell來操做內核。

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

Unix shell能夠做爲解釋器(interpreter)和編程語言使用。shell

看成爲命令解釋器使用時。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也提供了變量,流程控制,引用,函數。ide

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做爲單元處理的一系列字符。詞彙可能不包括未引用的「元字符」。
相關文章
相關標籤/搜索