有些程序直接在 上打印二进制输出stdout
。以下是一些示例:
tar -c file.png
dd if=file.png
好吧,我知道输出可以重定向到文件。但这些程序已经接受输出文件名作为参数。因此,以下命令将产生相同的结果:
tar -c file.png > file.tar
tar -c file.png -f file.tar
dd if=file.png > copy.png
dd if=file.png of=copy.png
二进制输出还可以用于什么其他用途stdout
?
答案1
对于建筑管道,显然。最大的优点是您可以避免创建临时文件:
(对于此示例,假设旧版本tar
没有-J
或-I
压缩选项。)
tar -c foo/*.png | xz -9 | uuencode "foo.tar.xz" | mail -s "Sending foo" musa
现在想象一下如果您必须使用
-f
等等......您将拥有 VMS。焦油-cffoo.tarfoo/*.png xz-9-ofoo.tar.xz foo.tar uuencode-ofoo.uue foo.tar.xz 邮件-afoo.uue-s “发送 foo” musa R Mfoo.tar foo.tar.xz foo.uue
您可以通过网络执行管道:
ssh storageserver "cd ~/foo && tar -c bar" | pv | tar -x
curl https://example.com/secret.gpg | ssh mylaptop "gpg --decrypt" > secret.zip
更多示例:
curl http://i.imgur.com/L1aOt.jpg | display
有时你甚至不知道需要将其通过管道传输到任何地方,即使输出是“二进制”。在 Xterm 上尝试此操作:
curl http://www.dim13.org/tek/teapot.tek # Utah teapot
答案2
目的可能因用户而异。开发人员可以使用该信息进行日志记录、进度跟踪甚至错误处理。