Bash

wget -qO- 中破折號的用途 https://get.speedify.com |重擊-

  • September 27, 2021

在這個命令中:

wget -qO- https://get.speedify.com | bash -

來源: https: //support.speedify.com/article/562-install-speedify-linux

…第一個-q是“安靜”模式的選項。什麼是O-(注意是字母“O”,不是零)部分?為什麼是字母O?為什麼是尾隨-?最後,在bash命令後面還有一個-. 為什麼?

更新:現在我知道這是字母 O,而不是零,我從man wget手冊頁中看到了這一點:

  -O file
  --output-document=file
      The documents will not be written to the appropriate
      files, but all will be concatenated together and written
      to file.  If - is used as file, documents will be
      printed to standard output, disabling link conversion.

所以,和-qO, 一樣-q -O,-O設置輸出文件,-O-顯然是說把文件列印到標準輸出。我想知道他們為什麼不這樣做,-O=-或者-O -雖然……?

不重複:

這個問題回答了我的問題中最小、最不相關和最不重要的部分:命令行選項在選項名稱和值之間採用等號嗎?. 它沒有回答我的問題。

我相信您正在尋找3個問題的答案。讓我依次帶他們。

  1. 正如您從手冊頁中確定的那樣,-當用作要寫入的文件名時,將指示stdout.
  2. bash命令部分中,-用作要讀取的文件的名稱。在這種情況下,它告訴它從stdin. 由於這兩個命令是通過管道傳輸的,因此它將讀取stdout從步驟 1 寫入的內容。
  3. 最後,不是-O=-因為getopt標準 C 庫在解析命令行選項時的工作方式。當您有不帶參數的單字母選項時(例如,-v對於詳細和-r遞歸),您可以單獨指定它們(-v -r)或作為塊(-vr),並且在它們之前只使用一個破折號。如果單個字母選項帶有一個參數(例如,-w <outfile>),則getopt期望該選項之後的下一件事是參數。所以-w foo-wfoo是相同的,因為它們寫入文件foo。然而,-vw foo-wv foo會有不同的解釋。-vw foo會很冗長並寫入文件 foo,但-wv foo會寫入文件v並有foo作為附加的命令行參數。

長參數由開頭的兩個破折號指定。在處理這些參數時,它希望參數位於=符號之後。如果您回顧 wget 引用的部分,您會發現它告訴您-O file選項的“短”版本和--output-documet=file長版本。

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