向后重定向与管道相同吗?


11

在Linux中,如果您键入

sort < txtfile

是一样的东西吗

cat txtfile | sort

Answers:


17

关于标题的问题:否。stdin从文件内容获取(输入重定向)与将一个程序的输出传递到另一程序的输入不同。

但是,由于您cat实际上只是打印文件的内容,因此该示例中的结果实际上是相同的。


但是,即使是以下情况也会产生完全不同的结果:

$ cat * | sort
$ sort < *

如果有多个匹配文件,则后者将产生

-bash: *: ambiguous redirect

由于它的灵活性不如前者,后者可以管理所有匹配的文件,并将它们作为输入传送到sort


3
那... sort *呢?没有猫的无用使用,没有间接的无用使用,最短的类型输入,最容易想到的,而且我相信GNU排序会为您处理超大文件的可伸缩性优化(对此不太确定-一半的记忆在那里)
呵呵

1
@sehe可能是。我只是通过示例来说明两者是不同的。这与有效使用排序无关。当然,排序更灵活。
丹尼尔·贝克

@DanielBeck,关于效率,sort < txtfile比效率高得多cat txtfile | sort
Pacerier,2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.