gpg — 仅将内容直接解密到 stout
gpg — decrypt only content directly to stout
我有文件 secret.txt.gpg
我想解密,这样内容就存储在这样的变量中:
TXT=$(gpg --decrypt secret.txt.gpg)
但这种方式添加了很多额外的 gpg: …
行,包含有关密钥等的信息,例如:
gpg: encrypted with 4096-bit RSA key, ID xxxx, created xxxx
"xx xx (xx) <xx@xx.xx>"
gpg: Signature made xxx
gpg: using RSA key xxx
…
Secret Message
顺便说一句:
gpg -d secret.txt.gpg > out.txt
只是将内容写入文件。
如何只捕获内容,而不将其写入文件?
更新
尽管@Roger Answer 更好并解释了原因,但我可以使用它:
TXT=$(gpg --decrypt secret.txt.gpg > /dev/stdout)
GPG 消息被写入 STDERR,这就是为什么通过管道将 STDOUT 传输到文件会忽略这些消息。
如果加密文件未签名,您通常会通过提供 --quiet
开关来抑制有关加密的消息。如果文件已签名,您仍会收到有关签名的消息。即使您提供了 --skip-verify
,您仍然会收到一条消息,提示您签名验证已被禁止。
为了抑制所有这些消息,我建议您通过管道将 STDERR 传输到 /dev/null
,例如:
TXT=$(gpg --decrypt secret.txt.gpg 2>/dev/null)
我有文件 secret.txt.gpg
我想解密,这样内容就存储在这样的变量中:
TXT=$(gpg --decrypt secret.txt.gpg)
但这种方式添加了很多额外的 gpg: …
行,包含有关密钥等的信息,例如:
gpg: encrypted with 4096-bit RSA key, ID xxxx, created xxxx
"xx xx (xx) <xx@xx.xx>"
gpg: Signature made xxx
gpg: using RSA key xxx
…
Secret Message
顺便说一句:
gpg -d secret.txt.gpg > out.txt
只是将内容写入文件。
如何只捕获内容,而不将其写入文件?
更新
尽管@Roger Answer 更好并解释了原因,但我可以使用它:
TXT=$(gpg --decrypt secret.txt.gpg > /dev/stdout)
GPG 消息被写入 STDERR,这就是为什么通过管道将 STDOUT 传输到文件会忽略这些消息。
如果加密文件未签名,您通常会通过提供 --quiet
开关来抑制有关加密的消息。如果文件已签名,您仍会收到有关签名的消息。即使您提供了 --skip-verify
,您仍然会收到一条消息,提示您签名验证已被禁止。
为了抑制所有这些消息,我建议您通过管道将 STDERR 传输到 /dev/null
,例如:
TXT=$(gpg --decrypt secret.txt.gpg 2>/dev/null)