猫文件| ...... vs ... <文件

nam*_*min 16 unix puzzle shell pipe

是否存在与...上下文cat file | ...行为不同的情况... <file

JB.*_*JB. 11

从常规文件cat读取时,负责读取数据,随意执行,并可能将其写入管道的方式进行约束.显然,内容本身是保留的,但其他任何东西都可能被污染.例如:块大小和数据到达时间.另外,管道本身并不总是中性的:它作为输入和输入之间的附加缓冲区....

快速简便地解决块大小问题:

$ cat large-file | pv >/dev/null
5,44GB 0:00:14 [ 393MB/s] [              <=>                                  ]
$ pv <large-file >/dev/null
5,44GB 0:00:03 [1,72GB/s] [=================================>] 100%
Run Code Online (Sandbox Code Playgroud)


Geo*_*edy 6

除了其他用户发布的内容之外,当使用来自文件的输入重定向时,标准输入是文件,但是当将 cat 的输出通过管道传输到输入时,标准输入是包含文件内容的流。当标准输入为文件时,文件将能够在文件中查找,但管道不允许。您可以通过找到一个 zip 文件并运行以下命令来查看这一点:

zipinfo /dev/stdin < thezipfile.zip
Run Code Online (Sandbox Code Playgroud)

cat thezipfile.zip | zipinfo /dev/stdin
Run Code Online (Sandbox Code Playgroud)

第一个命令将显示 zipfile 的内容,而第二个命令将显示错误,尽管这是一个误导性错误,因为 zipinfo 不会检查 seek 调用的结果和稍后的错误。


Jen*_*ens 6

总是要避免对 cat无用使用。这就像手刹行驶。它白白浪费了 CPU 周期,操作系统不断在 cat 进程和管道中的下一个进程之间进行上下文切换。如果世界上所有无用的猫都消失了,不再被发明、重新发明、父子代代相传,我们就不会有全球变暖,因为我们可以轻松地在节省 1.21 吉瓦的电力的情况下生活。

谢谢。我现在感觉好多了。请加入我的行动,以消除在 stackoverflow 上对 cat 的无用使用。在我看来,这个网站对无用猫的扩散做出了重大贡献。我不责怪新手,但我确实想教他们。全世界的工人和新手,松开手刹,拯救地球!!!1!


spo*_*son 5

cat将允许您按顺序管道多个文件.否则,<重定向并cat file |产生相同的副作用.