GPG解密文件时如何让解密文件自动保存至原加密文件所在目录
GPG解密文件时如何让解密文件自动保存至原加密文件所在目录
嗨,我来帮你解决这个问题!其实你不用每次都手动写长路径或者用重定向,有几个更简洁的方法能让解密后的文件直接存到原加密文件的目录里,尤其是结合--use-embedded-filename选项的时候:
方法1:切换到加密文件所在目录再解密
这是最直接的方式——先进入加密文件所在的目录,再执行解密命令:
cd dir1/dir2 gpg -d --use-embedded-filename foo.odt.gpg
这样GPG就会把解密后的foo.odt直接保存在当前目录(也就是dir1/dir2)里,完全符合你的需求。如果要批量解密该目录下的所有.gpg文件,还可以用通配符简化:
cd dir1/dir2 gpg -d --use-embedded-filename *.gpg
方法2:用shell参数扩展避免重复输入路径
如果你不想切换目录,可以利用shell的参数扩展功能,自动生成输出文件的路径,不用手动重复写目录。比如先把加密文件的路径赋值给变量(或者直接用文件名):
# 假设加密文件路径是dir1/dir2/foo.odt.gpg file_path="dir1/dir2/foo.odt.gpg" gpg -d --use-embedded-filename --output "${file_path%.gpg}" "$file_path"
这里的${file_path%.gpg}是shell的参数扩展语法,会自动去掉文件名末尾的.gpg后缀,直接得到原文件的完整路径dir1/dir2/foo.odt,省去了手动输入两遍路径的麻烦。
为什么默认会存到home目录?
顺便解释下你遇到的问题:当你在非加密文件所在的目录执行解密命令时,GPG会把解密后的文件放在当前工作目录(也就是你执行命令时所在的目录,通常是你的home目录),而不是原加密文件的目录。所以切换到原目录就能从根源上解决这个问题啦。
备注:内容来源于stack exchange,提问作者Paul Benson
相关产品推荐
相关产品推荐

