如何将数据写入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
和加密消息显示在控制台中。
我不想保存硬盘以避免性能下降。
答案 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)
只需省略--output。