写入stdout而不是文件

时间:2012-06-26 04:51:45

标签: bash

如何将数据写入stdout而不是写入文件?

我正在使用GPG并希望将加密文本打印到stdout,而不保存文件。

但是,使用gpg命令,加密文本以普通方式写入文件:

$> gpg --recipient someone@example.com --armor --output encrypted.txt --encrypt example.pdf

(使用上述命令,加密文件保存在encrypted.txt中)

我想做的就像是:

$> gpg --recipient someone@example.com --armor --output <STDOUT> --encrypt example.pdf

和加密消息显示在控制台中。

我不想保存硬盘以避免性能下降。

3 个答案:

答案 0 :(得分:5)

通常你使用&#34; - &#34;指定stdout,但并非所有命令都接受这一点,我不会谈论gpg。

例如:

tar -cvzf - foo/ ¦ split -b 50k foobar_

将管道&#34; tar文件&#34; stdout,拆分并保存到&#34; foobar_&lt; 123 ...&gt;&#34;。

答案 1 :(得分:2)

如果你的应用程序不支持' - '作为文件名(并且它应该),那么另一种选择是使用命名管道,虽然我承认这看起来像使用大锤来破解坚果:

pipe='/tmp/pipe'
mkfifo "$pipe"

gpg --recipient someone@example.com --armor --output "$pipe" --encrypt example.pdf &

while read 
do
    echo "$REPLY"
done < $pipe

rm "$pipe"

答案 2 :(得分:1)

基于gnupg manual

只需省略--output。