如何使用bash别名运行命令,该别名提示是/否继续

时间:2015-03-15 16:53:28

标签: bash alias sudo

我在函数的帮助下创建了一个别名sudo,以绕过stdin上的手动密码输入。 sudoers文件中的更改是我不允许做的。

myfunction() {
if [ $1 == vi ] 
then
/usr/bin/sudo $*
else
echo "Password@123" | /usr/bin/sudo -S $*
fi
}
alias sudo=myfunction

它运行正常,直到我运行需要stdin输入的命令,但在这里我无法输入yes或no。

sudo apt-get remove wicd
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  wicd
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 47.1 kB disk space will be freed.
Do you want to continue [Y/n]? Abort.

任何可以使我的别名来解决此问题的解决方案。

1 个答案:

答案 0 :(得分:1)

您可以使用sudo -v("验证")进行密码验证,然后只要您在5分钟内运行其他sudo命令,它就不会提示为了密码。顺便说一下,如果任何参数包含空格,通配符或其他未引用引用可能会混淆的内容,则应使用"$@"而不是$*

myfunction() {
    echo "Password@123" | /usr/bin/sudo -S -v
    /usr/bin/sudo "$@"
}