Unix cat 命令、管道和 stdin/stdout

Unix cat command, pipe and stdin/stdout

这里有一点我不明白。

为什么这有效:echo "akka" | cat

但这不会在控制台上产生“akka”:echo "akka" > cat

这甚至不起作用:cat < echo "akka"

对我来说,它们应该是一样的。但是这3个命令好像不一样

您混淆了文件重定向和管道之间的区别。

管道符号|用于将一个命令的输出传递给另一个命令。

同时,<>用于文件重定向。

这些是非常不同的操作。

示例 1:

echo "akka" | cat

echo 命令的输出是 akka,它通过管道传送到 cat 命令的标准输入中。 cat 命令写入标准输出,因此在本例中它打印 akka。当然,这和干脆没什么区别:

echo "akka"

示例 2:

echo "akka" > cat

echo 命令的输出为 akka。使用 >,然后将此输出重定向到名为 cat 的文件中。在这种情况下,终端中没有显示输出,因为输出被放入文件中。

示例 3:

cat < echo "akka"

这与前两个有很大不同。这将运行 cat 命令,该命令从标准输入读取。使用 <,输入从名为 echo 的文件传递到 cat 命令。如果不存在这样的文件,则会产生错误。