`wget -qO- https://get.speedify.com | 中破折号的用途重击-`

`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 -...?

不重复:

这个问题回答了我的问题中最小的、最不相关的和最不重要的部分:命令行选项在选项名称和值之间是否使用等号?。确实如此不是回答我的问题。

答案1

我相信您正在寻找 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会写入该文件vfoo作为附加命令行参数。

长参数由开头的两个破折号指定。处理这些参数时,它期望参数位于符号后面=。如果您回顾一下 wget 引用的部分,您会发现它告诉您-O file选项的“短”版本和--output-documet=file长版本。

相关内容