原文:What is a Shell? 註意:本文是對原文的一個翻譯! Shell是一個巨集處理器,用於執行命令。巨集處理器意味著,將文本和符號展開,創建一個更大的表達式。 Unix shell 既是一個命令解釋器,也是一門編程語言。作為一個命令解釋器,它提供了豐富的GUN工具集可以與用戶進行交互。作為 ...
原文:What is a Shell?
註意:本文是對原文的一個翻譯!
Shell
是一個巨集處理器,用於執行命令。巨集處理器意味著,將文本和符號展開,創建一個更大的表達式。
Unix shell
既是一個命令解釋器,也是一門編程語言。作為一個命令解釋器
,它提供了豐富的GUN工具集
可以與用戶進行交互。作為編程語言,它可以組合使用這些工具。創建的文件能包含命令,而這個文件同時也將成為一個命令──這是個新的命令,有著與/bin
中的命令一樣的狀態。用戶組合命令,建立自動化命令的環境。
Shell
可以交互的使用,也可以以非交互的方式使用。交互狀態,從鍵盤獲取輸入;非交互狀態,從文件中執行命令。
Shell
能以同步(synchronously
)或非同步(asynchronously
)的方式執行命令。重定向構造,可以控制輸入和輸出命令的粒度(fine-grained
)。shell
也允許控制命令環境的內容。
Shell
提供了一些內建的命令,用於實現工具所不能或不方便實現的功能。這些命令有:
- cd
- break
- continue
- exec
- exec 不能在外部實現,因為它會直接操作
shell
本身。
- exec 不能在外部實現,因為它會直接操作
- history
- getopts
- kill
- pwd
有一些命令可以以工具的方式實現,但實現在中shell
更為便。
執行命令只是基本,與大多數的編程語言一樣,shell
也提供了變數(variables),流控制結構(flow control constructs),引用(quoting)與函數(function)。
Shell
提供了專門用於交互使用的功能,有:
- 作業控制(job control)
- 命令行編輯(command line editing)
- 命令歷史(command history)
- 別名(aliases)