命令行参数中的“ – ”(破折号)有什么魔力?
例子:
-
创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读取或写入标准输出; 对壳来说没有什么特别的。
从stdin
或stdout
redirect。
请参阅: http : //tldp.org/LDP/abs/html/special-chars.html#DASHREF2
这意味着使用程序的标准inputstream。
在cd
的情况下,它意味着不同的 – 改变到以前的工作目录。
魔术在大会上。 数千年来,人们用“ – ”来区分选项和参数,并在文件名中使用“ – ”来表示stdin或stdout。 不要低估会议的力量!
-
意味着每个命令所要expression的意思。 有几个常见的约定,你可以在其他答案中看到大多数的例子,但是没有一个是100%通用的。
就shell而言,除了shell本身,还有一些像cd
和echo
这样的内置命令以传统的方式使用它之外,没有什么神奇的东西。 有些字符,比如\
, '
和"
, 是 “神奇的”,无论出现什么地方都有特殊的含义,就是“shell元字符” -
不是这样。
要查看给定命令如何使用,请阅读该命令的文档 。