Bash
wget -qO- 中破折號的用途 https://get.speedify.com |重擊-
在這個命令中:
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個問題的答案。讓我依次帶他們。
- 正如您從手冊頁中確定的那樣,
-
當用作要寫入的文件名時,將指示stdout
.- 在
bash
命令部分中,-
用作要讀取的文件的名稱。在這種情況下,它告訴它從stdin
. 由於這兩個命令是通過管道傳輸的,因此它將讀取stdout
從步驟 1 寫入的內容。- 最後,不是
-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
長版本。