我在一本书中读到过这个例子:
cp /bin/cat proj33
echo -n x | ./proj33 - pipe33a > pipe33b &
./proj33 <pipe33b >pipe33a &
符号-
、>
和<
是什么意思?
>
是 I/O 重定向;它将命令的标准输出 (./proj33
) 发送到文件pipe33b
。
<
符号也是 I/O 重定向;它从文件pipe33b
发送命令的标准输入(再次./proj33
)。
-
只是一个论点。 命令通常将其视为读取标准输入而不是文件的指示。 在这种情况下,proj33
通常需要一个文件作为其第一个参数,但它会在-
参数时从管道读取。 有时,-
用于指示标准输出。 在极端情况下,您可以在单个命令上获得一个指示标准输入的-
和一个指示标准输出的。使用GNUtar
,你可以tar -c -f - -T -
输出被写入标准输出(-f -
),并从标准输入(-T -
)读取要存档的文件列表。
如果你看到--
,那是非常不同的;它指示命令的"选项结束";后面的任何内容都不是选项,即使它以破折号-
开头。