" - "是指bash中的stdout吗?

Tim*_*Tim 8 bash

" - "是bash中stdout的快捷方式吗?如果不是什么意思?例如,

wget -q -O - $line 
Run Code Online (Sandbox Code Playgroud)

stdin怎么样?

感谢致敬!

Mat*_*lia 15

据我所知,bash没有涉及破折号的使用.它只是许多UNIX命令行实用程序的约定,它可以-作为占位符接受stdinstdout在命令行上替换输入或输出文件名.


编辑:找到它,此行为在POSIX实用程序语法指南,Open Group Base Specifications12.2.13节中指定:

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


Bru*_*uno 8

-只是wget(以及其他一些工具)使用的约定来指示将输出发送到stdout.它不是bash的一部分,但它是一个由命令本身处理的特殊情况(-如果您认为是这种情况,某些命令将最终创建一个" "文件).您可以将其替换为/dev/stdout(并且通常可以/dev/stdin在适当时用作输入文件).


sth*_*sth 5

-在 bash 中并不特殊,它只是作为程序的参数给出。那么这取决于程序如何解释它-

通常它表示应该使用 stdin 或 stdout,具体取决于上下文。