如何避免密码中的感叹号:
$ mysql -umyuser -pone_@&!two
-bash: !two: event not found
尝试明显的反斜杠并没有帮助:
$ mysql -umyuser -pone_@&\!two
[1] 22242
-bash: !two: command not found
[email protected] [~]# ERROR 1045 (28000): Access denied for user 'myuser'@'localhost' (using password: YES)
我所有的谷歌搜索都表明反斜杠会有所帮助,但事实并非如此。没有办法像这个问题。该行将在 .bashrc 别名中使用。别担心,此处显示的用户名和密码仅为示例,不会在生产中使用!
答案1
使用单引号将密码括起来,如下所示:-p'one_@&!two'
要将其放入别名中,您可以执行以下操作:
alias runmysql='mysql -umyuser -p'\''one_@&!two'\'''
答案2
-bash: !two: command not found
您还需要转义该&
字符:
$ mysql -umyuser -pone_@\&\!two
答案3
如果您从未使用过 ! 历史功能,那么禁用它们可能会更方便(在set +H
您的 bashrc 中)。
答案4
您可以将密码存储在 bash 变量中:
$ pass='one_@&!two'
然后在命令中替换变量:
$ mysql -umyuser -p$pass