O "problema" é que gpg escreve diretamente no TTY em vez de STDOUT ou STDERR. Isso significa que não pode ser redirecionado.
Você pode usar a opção --batch
conforme sugerido por daniel, mas como uma abordagem mais geral você pode usar a ferramenta script
, que falsifica um TTY. Qualquer saída é então enviada para STDOUT, para que você possa redirecioná-la para /dev/null
:
script -c 'echo "thisprogramwørks" | gpg -q --status-fd 1 --no-use-agent --sign --local-user D30BDF86 --passphrase-fd 0 --output /dev/null' > /dev/null
A saída também é gravada em um arquivo, portanto você ainda pode obtê-lo e analisá-lo. Veja man script
( link )