我希望创建一个简单的bash别名,因为这组特定的函数需要大量的选项和开关。这是背景信息,不是问题所在。
要执行有问题的命令,需要一个密码短语(通常位于多个位置),我希望将其最小化,同时为其他用户提供一些隐私。
下面是别名的例子...
alias test="read -sp 'Enter passphrase: ' pass; gpg --batch --passphrase $pass --symmetric --cipher-algo aes256 -o file.ext.gpg file.ext"别名工作正常,提示用户输入密码短语并将其应用于解密过程。
这就是问题所在:如果我加密文件并输入密码短语(不使用上面示例中所示的read -sp实用程序),加密文件的密码与使用'read‘二进制文件屏蔽输入的密码不同。
如果我显示使用read -sp捕获的$pass的内容,它显示的内容与我输入的内容一样,没有任何附加的行尾等。
有没有人经历过这个?
发布于 2012-09-20 18:19:11
你不应该引用$pass的话吗?如果它包含空格等,您还需要对$进行转义,使其在设置别名时不会扩展。
所以:
alias test="read -sp 'Enter pp: ' pass; gpg --passphrase \"\$pass\" --batch --symmetric --cipher-algo aes256 -o file.ext.gpg file.ext"除此之外,您可能希望使用--passphrase-fd,这样密码短语就不会出现在ps输出中:
alias test="read -sp 'pp: ' pass; gpg --passphrase-fd 3 --etc-etc 3<<< \$pass"发布于 2012-09-20 20:42:19
shell函数将更简单,因为您消除了引号级别,并且如果需要将该函数泛化到其他文件中,则允许使用参数。
# There is already a standard command called 'test'; use a different name
pass_encrypt () {
in=$1
out=$in.gpg
read -rsp 'Enter passphrase: ' pass
gpg --batch --passphrase-fd 3 --symmetric \
--cipher-algo aes256 -o "$out" "$in" 3<<<$pass
}(mvds建议使用--passphrase-fd)
https://stackoverflow.com/questions/12510506
复制相似问题