mus*_*usa 3 command-line stdout
一些程序直接在stdout. 这里有些例子:
tar -c file.png
dd if=file.png
Run Code Online (Sandbox Code Playgroud)
嗯,我看到输出可以重定向到一个文件。但是这些程序已经接受输出文件名作为参数。因此,以下命令将给出相同的结果:
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
Run Code Online (Sandbox Code Playgroud)
二进制输出stdout可以用于什么其他目的?
显然,用于建造管道。最大的优点是您可以避免创建临时文件:
(对于本例,假定一个旧版本的tar不具有-J或-I压缩选项。)
tar -c foo/*.png | xz -9 | uuencode "foo.tar.xz" | mail -s "Sending foo" musa
Run Code Online (Sandbox Code Playgroud)
现在想象一下,如果您必须使用-f这些东西……您将拥有 VMS。
tar -cf foo.tar foo/*.png xz -9 -o foo.tar.xz foo.tar uuencode -o foo.uue foo.tar.xz mail -a foo.uue -s "发送 foo" musa rm foo.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
Run Code Online (Sandbox Code Playgroud)
更多例子:
curl http://i.imgur.com/L1aOt.jpg | display
Run Code Online (Sandbox Code Playgroud)
有时您甚至不需要将其通过管道传输到任何地方,即使输出是“二进制”。在 Xterm 上试试这个:
curl http://www.dim13.org/tek/teapot.tek # Utah teapot
Run Code Online (Sandbox Code Playgroud)