命令行参数中的“ – ”(破折号)有什么魔力?

例子:

  • 创build一个ISO映像,并直接刻录到CD。

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

  • 切换到上一个目录。

    cd -

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

    nc -l -p 12345 | tar xvzf -

破折号的用途是什么?如何使用?

如果你的意思是裸体-tar命令的末尾,在很多想要使用文件的命令中是很常见的。

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

你的第一个和第三个例子就是这种情况。 例如, cdrecord命令正在接受标准input(由mkisofs生成的ISO映像stream)并将其直接写入到/dev/dvdrw

使用cd命令,每次更改目录时,都会存储您来自的目录。 如果您使用特殊的“目录名称”执行cd ,则会使用该记忆的目录而不是真正的目录。 通过使用它你可以很容易地在两个目录之间切换。

其他命令可能会被视为一个不同的特殊值。

这不是魔术。 一些命令解释-用户想从标准input读取或写入标准输出; 对壳来说没有什么特别的。

stdinstdoutredirect。

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

这意味着使用程序的标准inputstream。

cd的情况下,它意味着不同的 – 改变到以前的工作目录。

魔术在大会上。 数千年来,人们用“ – ”来区分选项和参数,并在文件名中使用“ – ”来表示stdin或stdout。 不要低估会议的力量!

-意味着每个命令所要expression的意思。 有几个常见的约定,你可以在其他答案中看到大多数的例子,但是没有一个是100%通用的。

就shell而言,除了shell本身,还有一些像cdecho这样的内置命令以传统的方式使用它之外,没有什么神奇的东西。 有些字符,比如\'" “神奇的”,无论出现什么地方都有特殊的含义,就是“shell元字符” -不是这样。

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