Command-Line

“命令”一詞背後隱藏的概念是什麼?

  • September 1, 2014

我已經為 Linux 使用、學習和開發了好幾年了,隨著時間的推移,我成功地說服了一些人加入這個事業,並轉向 Linux。

然而,當這些人去發現這個全新的世界時,他們每個人最終都來找我,問我做這個或那個的命令是什麼

  • 安裝軟體的命令是什麼?
  • 列出目前目錄內容的命令是什麼?
  • 打開我的網路瀏覽器的命令是什麼?

但對我來說,感覺就像他們在問錯誤的問題。事實上,我實際上希望他們會問:

  • 我們使用什麼程序來管理系統上安裝的軟體?
  • 什麼程序可以列出目前目錄內容?
  • 有哪些可用的網頁瀏覽程序?

在我看來,命令一詞是一個非常抽象的詞,用於描述您在 shell 提示符後鍵入的幾乎所有內容。帶著這樣的想法,我帶來的幾個新人開始相信:

  • Linux 由大量的命令組成。
  • 一切都有一個命令,每個命令都專門做一件事。
  • 通過適配更多命令,我將變得更有能力成為一名 Linux 使用者/管理員。
  • 通過執行,./something我不執行命令,而是儲存在目前目錄中的程序,可能是我自己編譯的。

因此,我傾向於不使用命令這個詞,而更喜歡使用程序執行檔。我還解釋了這些執行檔可以自動找到,而無需輸入它們的絕對路徑,這要歸功於該$PATH機制。多虧了這一點,鍵入ls執行/bin/ls,這是一個儲存在變數中註冊的目錄中的程序。/bin``$PATH

儘管如此,我還是在許多書籍、教程、指南……中遇到了命令這個詞,這最終讓我想到了這個問題:命令這個詞在 UNIX/Linux 詞彙表中是否真的有意義?它是否指的是*“無論您在終端中輸入什麼”*以外的實際概念?

POSIX shell 規範指的是簡單命令複合命令命令位置命令 command

前兩個參考如何/何時解析和執行shell*命令。*例如:

#one compound command
{ simple command; simple command && simple command; } 

複合命令是在評估和執行其組成的簡單命令之前,shell 必須讀取多少作為輸入。

命令位置是每個簡單命令中的第一個單詞,它具有特殊的意義,因為它決定瞭如何解析命令的其餘部分。某些保留字例如ifand while命令位置時,可以向解析器指示後面的內容應被解釋為複合命令,而不僅僅是簡單命令

命令 command可用於將命令移出命令位置。例如,這兩者的執行方式相同,但解析方式可能不同:

command simple command
simple command

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