4

如何将数据写入标准输出而不是写入文件?

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

但是,使用 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

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

我不想保存硬盘以避免性能损失。

4

3 回答 3

6

通常你使用“-”来指定标准输出,但并不是所有的命令都接受这个,我不关心 gpg。

例如:

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

将“tar 文件”通过管道传输到标准输出,将其拆分并保存到“foobar_<123...>”。

于 2012-06-26T04:57:25.253 回答
3

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

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"
于 2012-06-26T08:03:40.147 回答
2

基于gnupg 手册

只需省略 --output。

于 2012-06-26T05:02:44.610 回答