Shell Unix cat命令、管道和标准输入/标准输出
有件事我不明白 工作原理:Shell Unix cat命令、管道和标准输入/标准输出,shell,unix,scripting,pipe,stdin,Shell,Unix,Scripting,Pipe,Stdin,有件事我不明白 工作原理:echo“akka”| cat 但这不会在控制台上产生“akka”:echo“akka”>cat 这甚至不起作用:cat
echo“akka”| cat
但这不会在控制台上产生“akka”:echo“akka”>cat
这甚至不起作用:cat
对我来说,它们应该是一样的。但是这3个命令似乎不同您混淆了文件重定向和管道之间的区别 管道符号
|
用于将一个命令的输出传递到另一个命令
同时,
用于文件重定向
这些是非常不同的操作
示例1:
echo "akka" | cat
echo "akka" > cat
cat < echo "akka"
echo
命令具有输出akka
,该输出通过管道传输到cat
命令的标准输入。cat
命令写入标准输出,因此在本例中,它打印akka
。当然,这与简单地执行以下操作没有区别:
echo "akka"
示例2:
echo "akka" | cat
echo "akka" > cat
cat < echo "akka"
echo
命令具有输出akka
。然后使用
,将此输出重定向到名为cat
的文件中。在这种情况下,终端中没有显示输出,因为输出被放在文件中
示例3:
echo "akka" | cat
echo "akka" > cat
cat < echo "akka"
cat
这与前两个完全不同。这将运行从标准输入读取的
cat
命令。使用管道和重定向是两件截然不同的事情。简而言之,非常简单:一个管道连接两个程序;重定向时,将重定向到(或从)文件。
将标准输出重定向到文件echo“akka”>cat
工作正常:它在当前目录中创建一个名为cat
的文件……和cat
(与cat“akka”相同)@charles在这种情况下,我实际上找不到合适的副本。如果你能找到,请提出建议。你是说这个问题问得不好吗?现在正在处理副本列表。@charles虽然链接的副本是相关的,但我觉得我的回答提供了一个更相关的讨论,涵盖了问题中的3个案例。我做了searc对于重复的问题,我发现,但我觉得它没有很好地解决这个问题,特别是OP提到的第三个案例。因此,我在这个案例中提供了一个答案。是的。在花了一点时间研究这个问题和它的前几个问题之间的差异之后,我确实认为答案在这里是合理的;就此而言,我有时,当存在重复的内容时,会添加一个社区wiki回答我自己,但不清楚如何应用重复内容。好的,谢谢。所以基本上“cat