示例:
创建ISO映像并将其直接刻录到CD上。
mkisofs -V Photos -r /home/vivek/photos | cdrecord -v dev=/dev/dvdrw -
转到上一个目录。
cd -
侦听端口12345并发送给它的解压数据。
nc -l -p 12345 | tar xvzf -
短划线的目的是什么,我该如何使用?
答案 0 :(得分:89)
如果您指的是-
命令末尾的裸tar
,那么在许多想要使用文件的命令中这是常见的。
它允许您指定标准输入或输出,而不是实际文件名。
你的第一个和第三个例子就是这种情况。例如,cdrecord
命令采用标准输入(mkisofs
生成的ISO映像流)并将其直接写入/dev/dvdrw
。
使用cd
命令,每次更改目录时,它都会存储您来自的目录。如果您使用特殊的cd
“目录名”-
,它会使用记住的目录而不是真实的目录。您可以使用它快速轻松地在两个目录之间切换。
其他命令可能会将-
视为不同的特殊值。
答案 1 :(得分:14)
这不是魔术。有些命令将-
解释为用户想要从stdin读取或写入stdout;贝壳没什么特别的。
答案 2 :(得分:10)
从stdin
或stdout
重定向。
请参阅:http://tldp.org/LDP/abs/html/special-chars.html#DASHREF2
答案 3 :(得分:5)
魔术在大会中。几千年来,人们使用' - '来区分选项和参数,并在文件名中使用' - '来表示stdin或stdout,视情况而定。不要低估惯例的力量!
答案 4 :(得分:5)
-
意味着每个命令想要它的含义。有几个常见的约定,你已经在其他答案中看到了大多数的例子,但没有一个是100%普遍的。
就shell而言,-
字符没有任何魔力(除了shell本身,以及它的一些内置命令,如cd
和echo
,以常规方式使用它)。某些字符,例如\
,'
和"
, “神奇”,无论出现在何处都具有特殊含义。这些是“shell元字符”。 -
不是那样的。
要查看给定命令如何使用-
,请阅读该命令的文档。
答案 5 :(得分:4)
这意味着使用程序的标准输入流。
对于cd
,它意味着不同的东西 - 更改为先前的工作目录。