wget http://ipinfo.io/ip -qO -
我是新手,bash似乎无法弄清楚该尾随短划线字符的作用(或者为什么在此命令中需要它).
任何帮助深表感谢.
按照惯例(并非所有程序都遵循),文件名位置的破折号视情况而定为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:对于使用操作数表示要打开以进行读取或写入的文件的实用程序," - "操作数应仅用于表示标准输入(或从上下文中清除指定输出文件时的标准输出) )或名为 - 的文件.
...因此,-明确规定了有关的行为.