web-dev-qa-db-fra.com

Comment s'échapper! dans le mot de passe?

Comment échapper au point d'exclamation dans un mot de passe:

$ mysql -umyuser -pone_@&!two
-bash: !two: event not found

Essayer la barre oblique inverse n'a pas aidé:

$ 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)

Toutes mes recherches Google suggèrent que la barre oblique inverse aiderait, mais ce n'est pas le cas. Il n'y a aucun moyen d'utiliser des guillemets comme suggéré dans cette question . La ligne sera utilisée dans un alias .bashrc. Ne vous inquiétez pas, les noms d'utilisateur et mots de passe indiqués ici ne sont que des exemples et ne sont pas utilisés en production!

25
dotancohen

Utilisez des guillemets simples autour du mot de passe comme ceci: -p'one_@&!two'

Pour le mettre dans un alias, vous feriez quelque chose comme:

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

40
cas
-bash: !two: command not found

Vous devez également échapper au & personnage:

$ mysql -umyuser -pone_@\&\!two
4
quanta

Si vous n'utilisez jamais le! fonctions d'historique, il peut être plus pratique de simplement les désactiver (avec set +H dans votre bashrc).

3
Richard Kettlewell

Vous pouvez stocker le mot de passe dans une variable bash:

$ pass='one_@&!two'

Remplacez ensuite la variable dans la commande:

$ mysql -umyuser -p$pass
1
user7341695