Jak można uciec od wykrzyknika w haśle:
$ mysql -umyuser -pone_@&!two
-bash: !two: event not found
Wypróbowanie oczywistego ukośnika odwrotnego nie pomogło:
$ 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)
Wszystkie moje wyszukiwania w Google sugerują, że odwrotny ukośnik pomógłby, ale tak nie jest. Nie ma sposobu na użycie cudzysłowów, jak sugerowano w tym pytaniu . Linia będzie używana w aliasie .bashrc. Nie martw się, nazwy użytkowników i hasła pokazane tutaj są tylko przykładami i nie są używane w produkcji!
''\'
chmod 600
tym).'\''
nie''\'
/home/user
i mysql użytkownika, ale nie jestem decydentem w tym względzie.Odpowiedzi:
Używaj pojedynczych cudzysłowów wokół hasła w ten sposób:
-p'one_@&!two'
Aby umieścić to w aliasie, zrobiłbyś coś takiego:
alias runmysql='mysql -umyuser -p'\''one_@&!two'\'''
źródło
Musisz także uciec od
&
postaci:źródło
Jeśli nigdy nie użyjesz! funkcje historii, wygodniej może być po prostu je wyłączyć (
set +H
w swoim bashrc).źródło
Możesz przechowywać hasło w zmiennej bash:
Następnie podstaw zmienną w poleceniu:
źródło