Bagaimana orang bisa lolos dari tanda seru dengan kata sandi:
$ mysql -umyuser -pone_@&!two
-bash: !two: event not found
Mencoba backslash yang jelas tidak membantu:
$ 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)
Semua pencarian google saya menyarankan bahwa backslash akan membantu, tetapi tidak. Tidak ada cara untuk menggunakan kutipan seperti yang disarankan dalam pertanyaan ini . Baris tersebut akan digunakan dalam alias .bashrc. Jangan khawatir, nama pengguna dan kata sandi yang ditampilkan di sini adalah contoh saja dan tidak digunakan dalam produksi!
''\'
chmod 600
itu).'\''
bukan''\'
/home/user
pengguna sendiri dan mysql, tapi saya bukan pembuat keputusan dalam hal itu.Jawaban:
Gunakan tanda kutip tunggal di sekitar kata sandi seperti ini:
-p'one_@&!two'
Untuk memasukkannya ke alias, Anda akan melakukan sesuatu seperti:
alias runmysql='mysql -umyuser -p'\''one_@&!two'\'''
sumber
Anda juga harus keluar dari
&
karakter:sumber
Jika Anda tidak pernah menggunakan! fitur sejarah, mungkin lebih mudah untuk menonaktifkannya (dengan
set +H
di bashrc Anda).sumber
Anda dapat menyimpan kata sandi dalam variabel bash:
Kemudian gantilah variabel dalam perintah:
sumber