什么是""" (破折号)在命令行参数?

时间:2011-11-08 03:06:58

标签: linux bash shell unix command-line

示例:

  • 创建ISO映像并将其直接刻录到CD上。

    mkisofs -V Photos -r /home/vivek/photos | cdrecord -v dev=/dev/dvdrw -

  • 转到上一个目录。

    cd -

  • 侦听端口12345并发送给它的解压数据。

    nc -l -p 12345 | tar xvzf -

短划线的目的是什么,我该如何使用?

6 个答案:

答案 0 :(得分:89)

如果您指的是-命令末尾的裸tar,那么在许多想要使用文件的命令中这是常见的。

它允许您指定标准输入或输出,而不是实际文件名。

你的第一个和第三个例子就是这种情况。例如,cdrecord命令采用标准输入(mkisofs生成的ISO映像流)并将其直接写入/dev/dvdrw

使用cd命令,每次更改目录时,它都会存储您来自的目录。如果您使用特殊的cd“目录名”-,它会使用记住的目录而不是真实的目录。您可以使用它快速轻松地在两个目录之间切换。

其他命令可能会将-视为不同的特殊值。

答案 1 :(得分:14)

这不是魔术。有些命令将-解释为用户想要从stdin读取或写入stdout;贝壳没什么特别的。

答案 2 :(得分:10)

stdinstdout重定向。

请参阅:http://tldp.org/LDP/abs/html/special-chars.html#DASHREF2

答案 3 :(得分:5)

魔术在大会中。几千年来,人们使用' - '来区分选项和参数,并在文件名中使用' - '来表示stdin或stdout,视情况而定。不要低估惯例的力量!

答案 4 :(得分:5)

-意味着每个命令想要它的含义。有几个常见的约定,你已经在其他答案中看到了大多数的例子,但没有一个是100%普遍的。

就shell而言,-字符没有任何魔力(除了shell本身,以及它的一些内置命令,如cdecho,以常规方式使用它)。某些字符,例如\'" “神奇”,无论出现在何处都具有特殊含义。这些是“shell元字符”。 -不是那样的。

要查看给定命令如何使用-请阅读该命令的文档

答案 5 :(得分:4)

这意味着使用程序的标准输入流。

对于cd,它意味着不同的东西 - 更改为先前的工作目录。