Как избежать восклицательного знака в пароле:
$ mysql -umyuser -pone_@&!two
-bash: !two: event not found
Использование очевидной обратной косой черты не помогло:
$ 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)
Все мои поиски в Google показывают, что обратная косая черта поможет, но это не так. Невозможно использовать кавычки, как предлагается в этот вопрос. Строка будет использоваться в псевдониме .bashrc. Не волнуйтесь, приведенные здесь имена пользователей и пароли являются только примерами и не используются в производстве!
Используйте одинарные кавычки вокруг пароля, например: -p'one_@&!two'
Чтобы вставить его в псевдоним, вы должны сделать что-то вроде:
alias runmysql='mysql -umyuser -p'\''one_@&!two'\'''
-bash: !two: command not found
Вам также нужно избежать &
персонаж:
$ mysql -umyuser -pone_@\&\!two
Если вы никогда не используете! функции истории, может быть удобнее просто отключить их (с set +H
в вашем bashrc).
Вы можете сохранить пароль в переменной bash:
$ pass='one_@&!two'
Затем подставьте переменную в команду:
$ mysql -umyuser -p$pass