怎么逃!在密码?

dot*_*hen 28 mysql linux bash

如何摆脱密码中的感叹号:

$ mysql -umyuser -pone_@&!two
-bash: !two: event not found
Run Code Online (Sandbox Code Playgroud)

尝试明显的反斜杠没有帮助:

$ mysql -umyuser -pone_@&\!two
[1] 22242
-bash: !two: command not found
name@domain.com [~]# ERROR 1045 (28000): Access denied for user 'myuser'@'localhost' (using password: YES)
Run Code Online (Sandbox Code Playgroud)

我所有的谷歌搜索都表明反斜杠会有所帮助,但事实并非如此。没有办法按照这个问题中的建议使用引号。该行将用于 .bashrc 别名。别担心,这里显示的用户名和密码只是示例,不用于生产!

cas*_*cas 43

在密码周围使用单引号,如下所示: -p'one_@&!two'

要将它放在别名中,您可以执行以下操作:

alias runmysql='mysql -umyuser -p'\''one_@&!two'\'''


qua*_*nta 5

-bash: !two: command not found
Run Code Online (Sandbox Code Playgroud)

您还需要转义&字符:

$ mysql -umyuser -pone_@\&\!two
Run Code Online (Sandbox Code Playgroud)


Ric*_*ell 5

如果您从不使用!历史功能,简单地禁用它们可能会更方便(在set +H您的 bashrc 中)。