Utilities

為什麼使用多餘的破折號 (-) 將選項標誌傳遞給 tar?

  • December 12, 2019

要為目錄創建 tar 文件,可以輸入帶有和選項的tar命令:compress``verbose``file

$ tar -cvf my.tar my_directory/

但它也可以這樣做:

$ tar cvf my.tar my_directory/

也就是說,選項前面沒有破折號 (-)。為什麼你會向選項列表傳遞一個破折號 (-)?

歷史上在 UNIX 應用程序中使用的選項有幾種不同的模式。一些舊的,如tar,使用位置方案:

命令選項參數

例如 tar 使用

tar somethingf “文件操作” “要操作的文件路徑”

為了避免混淆,tar和其他一些具有舊標誌參數風格的程序允許用破折號分隔標誌,但我們大多數老人只是忽略了這一點。

其他一些命令具有更複雜的命令行語法,例如dd(1),它使用標誌、等號、路徑名、參數和梨樹中的鷓鴣,所有這些都被隨意拋棄。

在 BSD 和更高版本的 unix 中,這或多或少會收斂到標有“-”的單字元標誌,但這開始出現幾個問題:

  • 標誌可能很難記住
  • 有時您實際上想使用帶有“-”的名稱
  • 尤其是對於 GNU 工具,可能的標誌數量開始受到限制。因此 GNU 工具添加了 GNU 長選項,例如--output.

然後 Sun 認為多餘的“-”是多餘的,並開始使用帶有單個“-”的長樣式標誌。

這就是現在的混亂局面。

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