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!
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'\'''
-bash: !two: command not found
Vous devez également échapper au &
personnage:
$ mysql -umyuser -pone_@\&\!two
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).
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