在Bash中,'-'代表什么意思?

9

'-'在bash中的确切用途是什么?我知道它们可以用于:

  1. cd - # 回到旧的“当前工作目录”
  2. some stream generating command | vim - # 以某种方式将文本传递给vim。

我的问题是,-在bash中究竟是什么?在什么其他情况下可以使用它?

问候, Arun


4
@Jonas: Bash脚本编程是名称。 - aviraldg
4个回答

17

这取决于应用程序。

cd -

返回到你上次所在的目录。

通常情况下,- 代表标准输入或标准输出。例如:

xmllint -

该命令未检查XML文件,而是检查stdin上的XML。 示例:

xmllint - <<EOF
<root/>
EOF
同样的事情也适用于cat
cat -

从标准输入 stdin 中读取。当 - 代表 stdout 时,是一个示例:

wget -O- http://google.com

将通过HTTP接收google.com并将其发送到stdout

顺便说一下:这与您的shell(例如bash)无关,这只是被调用应用程序的语义。


3
在bash中,单独使用-没有任何意义(我不敢说它在shell中完全没有意义——例如,在扩展中使用,例如ls [0-9]*会列出以数字开头的所有文件)。
就作为单独的参数值而言,bash不会对其进行任何特殊处理,直接原样传递给命令。
命令如何处理取决于每个单独的程序,可能是任何操作。
有一个常用的约定,即-参数指示程序需要从STDIN而不是文件中读取输入。同样,这只是许多程序编码的方式,与bash技术上无关。

1

来自tldp

例如,可以使用连字符(-)来指示程序应从管道中读取数据。

这解释了你的vim示例如何获取数据。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接