示例:
创建 ISO 映像并将其直接刻录到 CD。
mkisofs -V Photos -r /home/vivek/photos | cdrecord -v dev=/dev/dvdrw -
更改到上一个目录。
cd -
监听端口 12345 并解压发送到该端口的数据。
nc -l -p 12345 | tar xvzf -
破折号的用途是什么以及如何使用它?
如果您指的是
-
命令末尾的裸露 tar
,那么这在许多想要使用文件的命令中很常见。
它允许您指定标准输入或输出,而不是“实际”文件名。 这就是您的第一个和第三个示例的情况。例如,
cdrecord
命令正在获取标准输入(由
mkisofs
生成的ISO图像流)并将其直接写入/dev/dvdrw
。 使用
cd
命令,每次更改目录时,它都会存储您来自的目录。如果您使用特殊的
cd
“目录名称”执行 -
,它将使用记住的目录而不是真实的目录。您可以使用它轻松快速地在两个目录之间切换。其他命令可能将
-
视为
不同特殊值。
-
解释为用户想要从
stdin
读取或写入 stdout
。对于shell来说没有什么特别的。
-
的意思正是每个命令想要的意思。有几种常见的约定,您已经在其他答案中看到了其中大多数的示例,但它们都不是 100% 通用的。
就 shell 而言,
-
字符没有什么神奇之处(除了 shell 本身及其一些内置命令(如
cd
和 echo
)以传统方式使用它)。有些字符,如\
、'
和"
、是“神奇的”,无论出现在哪里都具有特殊含义。这些是“shell 元字符”。 -
不是那样的。要了解给定命令如何使用
-
,请阅读该命令的文档
。表示使用程序的标准输入流。
cd
神奇之处在于约定。几千年来,人们使用
-
作为文件名来表示 stdin 或 stdout(视情况而定)。不要低估约定的力量!