在这个命令中:
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
长版本。