Shell

什麼是命令?

  • May 12, 2022

當使用不同的術語來表示不同的概念時,可以促進清晰的思維和清晰的溝通。

當這兩個概念非常相似但不同時,這特別有用。

我們傾向於使用術語“命令”來表示 2 個非常相似但不同的概念。

概念 1:在命令行界面上輸入的單個程序。

選項可能會傳遞給程序,但仍然只有 1 個程序被使用。

例子):

$ ls
$ ls -alF

這個概念被稱為“命令”。

概念 2:在按 Enter 鍵以指示 shell 處理之前在命令行界面上輸入的任何內容。

例子):

$ ls -alF | head > output.txt; cat output.txt

這個概念也被稱為“命令”。

即使根據前面的定義,它包含 3 個不同的“命令”也是如此。

對於希望使用不同的術語來表示不同的概念以便更準確地思考和交流想法的人,用什麼術語來表示這兩個不同的概念最好?

好吧,我想你可以閱讀 Shell 命令語言規範,尤其是。2.9 外殼命令

本節介紹 shell 命令的基本結構。以下命令描述均描述了一種命令格式,僅用於幫助讀者辨識命令類型,並不正式表示語法。

$$ … $$每個描述都討論了命令的語義;有關命令語言的正式定義,請參閱Shell Grammar。 命令是以下之一:

$$ Simple command, Pipeline, List, Compound command, Function definition $$

下面是一個簡單的命令ls這裡是“命令名”:

ls -alF

下面是一個管道,其中包含兩個簡單的命令:

ls -alF | head > output.txt

下面是一個管道的順序列表(或只是一個列表)和一個簡單的命令:

ls -alF | head > output.txt; cat output.txt

(再一次,您可以將這裡的第一個範例也作為(退化的)管道。)

下面是一個帶有一個 AND 列表的列表,其中包含一個複合命令和一個簡單命令的管道,列表中的下一個是另一個簡單命令。

for x in a b c; do echo "$x"; done | cat -n && echo ok; echo end.

(如果我正確閱讀了 Lists 上的部分,如果你用換行符而不是 a 分隔命令;,那將是一個複合列表,但這已經是挑剔了。)

我真的不希望其他文件(或本網站上的文章)仔細地堅持使用這些確切的片語(正確地),因此嘗試精確地使用它們進行交流可能會變得很困難。擁抱混亂。

引用自:https://unix.stackexchange.com/questions/702193