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
命令。如果不存在这样的文件,则会产生错误。
这里有一点我不明白。
为什么这有效: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
命令。如果不存在这样的文件,则会产生错误。