Читая ваш комментарий, я думаю, что вы можете создать временный файл и уничтожить его при выходе из evince.
gpg --output bar.$$.pdf --decrypt foo.pdf.gpg ; evince bar.$$.pdf ; rm bar.$$.pdf
(Обратите внимание, что с $$
вы берете PID текущего сеанса BASH).
Если вы хотите повысить безопасность, вы можете создать небольшой скрипт, который выполняет вышеупомянутые команды и wait
окончания evince
в subshell ()
. Вы можете начать с чего-то вроде следующего: chmod u+x foobar.sh
чтобы сделать его исполняемым.
#!/bin/bash
FileToDecript=${1} # pass the name as 1st parameter
[ $# != 1 ] && exit 1; # exit if you forget about it
FileOut="temp.$$.pdf" # temporary filename with the bash PID
gpg --output $FileOut --decrypt $FileToDecript ;
[ ! $? -eq 0 ] && exit 2; # exit if failed to decrypt
# The following run in a subshell (...)
( evince $FileOut & # evince runs in background
wait $! # here wait evince ends
rm $FileOut ) & # here remove the file
# the subshell is executed in background `&`
Возможно, вы захотите создать временный файл в специальном каталоге, который не может быть прочитан другими пользователями, и, возможно, в каталоге /tmp
или другом, который будет удален при следующей перезагрузке.