wget:这个尾随破折号代表/做什么?

Rob*_*eph 4 shell wget

wget http://ipinfo.io/ip -qO -

我是新手,bash似乎无法弄清楚该尾随短划线字符的作用(或者为什么在此命令中需要它).

任何帮助深表感谢.

Cha*_*ffy 8

按照惯例(并非所有程序都遵循),文件名位置的破折号视情况而定为stdin或stdout.由于这是-O(输出)的参数,因此它指的是stdout.

一个更冗长的方式来编写它(在Linux或其他操作系统上,/dev/stdout除了shell之外的程序可以使用)将是:

wget http://ipinfo.io/ip --quiet --output-document=/dev/stdout
Run Code Online (Sandbox Code Playgroud)

碰巧,此行为由POSIX实用程序语法指南定义.特别:

准则5:在一个' - '分隔符后面分组时,应该接受一个或多个没有选项参数的选项,后面跟最多一个带选项参数的选项.

...因此,-qO被视为相同-q -O.

准则13:对于使用操作数表示要打开以进行读取或写入的文件的实用程序," - "操作数应仅用于表示标准输入(或从上下文中清除指定输出文件时的标准输出) )或名为 - 的文件.

...因此,-明确规定了有关的行为.