【发布时间】:2019-03-22 13:48:45
【问题描述】:
我想在命令行上将filename 的内容发送到some_cmd。运行这个有什么区别:
$ cat filename | some_cmd
和
$ some_cmd < filename
在某些情况下我可以或应该使用一种而不是另一种吗?
【问题讨论】:
-
首先,您正在创建两个进程,它们之间有一个管道。在第二种情况下,您只运行一个进程并且没有管道。在后者中,您可以预期
fseek(stdin,...)会成功,但在前者中,您应该预期在 stdin 上搜索会失败。 -
Useless use of cat?的可能重复
-
@xhienne, ...如果那里的答案没有受到受欢迎程度而不是正确性的严重影响...
-
@CharlesDuffy 我不同意那里的每一个观点,但至少它可能最好地回答 Ashton 的问题“在某些情况下我可以使用一种而不是另一种吗?”
-
@xhienne 感谢您指出这个问题。我认为它有一些有用的信息。但是,我不是在问
cat何时“无用地使用”——我问的是这两种方法之间的区别以及何时使用其中一种方法是合适的。 (请参阅我更新的问题。)@CharlesDuffy 的回答指出了这一点。另一个问题没有完全回答我的问题。
标签: linux bash unix pipe io-redirection