パスワードの感嘆符をエスケープする方法:
$ mysql -umyuser -pone_@&!two
-bash: !two: event not found
明白なバックスラッシュを試しても助けにはなりませんでした:
$ 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)
私のすべてのグーグル検索は、バックスラッシュが役立つことを示唆していますが、そうではありません。 この質問 で提案されているように引用符を使用する方法はありません。この行は.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