gpg - расшифровывать только контент напрямую в stout - PullRequest
0 голосов
/ 17 июня 2020

У меня есть файл secret.txt.gpg, который я хотел бы расшифровать, чтобы его содержимое сохранялось в такой переменной:

TXT=$(gpg --decrypt secret.txt.gpg)

Но в этом случае много дополнительных gpg: … строк добавлен, содержащий информацию о ключе et c. вот так:

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 лучше и объясняет почему, я мог бы сделать это, используя это:

 TXT=$(gpg --decrypt secret.txt.gpg > /dev/stdout)

1 Ответ

0 голосов
/ 17 июня 2020

Сообщения GPG записываются в STDERR, поэтому конвейерная передача STDOUT в файл пропускает эти сообщения.

Если зашифрованный файл не подписан, вы обычно подавляете сообщения о шифровании, предоставляя переключатель --quiet . Если файл подписан, вы все равно будете получать сообщения о подписи. Даже если вы предоставите --skip-verify, вы все равно получите сообщение, мягко информирующее вас о том, что проверка подписи была подавлена.

Чтобы подавить все эти сообщения, я предлагаю вам перенаправить STDERR на /dev/null, например:

TXT=$(gpg --decrypt secret.txt.gpg 2>/dev/null)
...