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
name@domain.com [~]# 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!
''\'
chmod 600
).'\''
pas''\'
/home/user
utilisateur et mysql, mais je ne suis pas le décideur à cet égard.Réponses:
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'\'''
la source
Vous devez également échapper au
&
personnage:la source
Si vous n'utilisez jamais le! fonctionnalités d'historique, il peut être plus pratique de simplement les désactiver (avec
set +H
dans votre bashrc).la source
Vous pouvez stocker le mot de passe dans une variable bash:
Remplacez ensuite la variable dans la commande:
la source