Linux 中的“-”符号是什么意思?

Linux 中的“-”符号是什么意思?

我一直看到这个符号,但我的书尚未阐明它的含义。手册页或网络搜索都没有澄清这一点。起初我相信它是一个 I/O 符号,但当我尝试使用它时却不起作用。

例如,在patchMan 和 Info 文档中,它说

您还可以使用“-i PATCHFILE”或“--input=PATCHFILE”选项指定从何处读取补丁。如果您未指定 PATCHFILE,或者 PATCHFILE 为'-',则“path”将从标准输入读取补丁(即“diff”输出)。

每当我看到“-”符号时,它后面(在某些时候)几乎都会提到标准输入。

我在这里缺少什么?该符号是否引用标准输入?在 Bash 上下文中“-”是什么意思?

答案1

-Bash根本不解释参数。它只是许多程序实现的约定。

当程序正常处理文件时,您通常会看到它,因此它们需要一些文本字符串,当您希望它处理文件时,它们不太可能是要使用的文件名stdin/stdout反而。

您不太可能会遇到一个故意命名为 的文件的系统-,因为这是标准的选项字符在 Unix 上。但是,因为命名文件实际上是合法的-- 或者更一般地说任何文件开始with -— 许多能够理解某个-参数的程序理解选项--,意思是“停止处理选项”。这可以让您执行诸如删除名为的文件之类的操作-

$ rm -- -

答案2

据我所知,这不是 bash 构造,而是一种约定。应用程序用于-表示从 stdin 读取或写入 stdout 来代替实际文件或写入 /dev/stdin /dev/stdout。

相关内容