Wie könnte man das Ausrufezeichen in einem Passwort umgehen:
$ mysql -umyuser -pone_@&!two
-bash: !two: event not found
Es half nicht, den offensichtlichen Backslash zu versuchen:
$ 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)
Alle meine Google-Suchen deuten darauf hin, dass der Backslash helfen würde, aber nicht. Es gibt keine Möglichkeit, Anführungszeichen wie in dieser Frage vorgeschlagen zu verwenden . Die Zeile wird in einem .bashrc-Alias verwendet. Keine Sorge, die hier gezeigten Benutzernamen und Passwörter sind nur Beispiele und werden nicht in der Produktion verwendet!
''\'
chmod 600
Sie daran).'\''
ist nicht''\'
/home/user
und einen MySQL-Benutzer hat, aber ich bin in dieser Hinsicht nicht der Entscheidungsträger.Antworten:
Verwenden Sie einfache Anführungszeichen um das Kennwort wie folgt:
-p'one_@&!two'
Um es in einen Alias zu setzen, würden Sie Folgendes tun:
alias runmysql='mysql -umyuser -p'\''one_@&!two'\'''
quelle
Sie müssen auch den
&
Charakter entkommen :quelle
Wenn Sie das nie benutzen! Verlaufsfunktionen ist es möglicherweise praktischer, sie einfach zu deaktivieren (mit
set +H
in Ihrem bashrc).quelle
Sie können das Passwort in einer Bash-Variablen speichern:
Ersetzen Sie dann die Variable im Befehl:
quelle