在此命令中:
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 -
...?
不重复:
这个问题回答了我的问题中最小的、最不相关的和最不重要的部分:命令行选项在选项名称和值之间是否使用等号?。确实如此不是回答我的问题。
答案1
我相信您正在寻找 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
长版本。