ZSH:
sudo apt-get remove --purge ubuntuone-*
ERROR: zsh: no matches found: ubuntuone-*
Bekerja di Bash. Apa masalahnya ? :-D
ZSH:
sudo apt-get remove --purge ubuntuone-*
ERROR: zsh: no matches found: ubuntuone-*
Bekerja di Bash. Apa masalahnya ? :-D
Jawaban:
Ya, zsh
dan bash
berperilaku berbeda dalam hal ini.
Di zsh
, ketika Anda mengatakan " ubuntuone-*
" itu terlihat di direktori kerja Anda saat ini untuk file yang dimulai dengan ubuntuone-
- karena tidak menemukan apa pun, ia mengatakan " no matches
" dan tidak menjalankan perintah.
bash
mengambil taktik yang berbeda - ia juga mencari file yang dimulai dengan ubuntuone-
di direktori kerja saat ini, tetapi jika tidak menemukan itu mengatakan kepada dirinya sendiri, "Mungkin program saya memohon tahu bagaimana menangani wildcard," dan seterusnya " ubuntuone-*
"ke sudo apt-get
sebagai argumen literal.
Jika Anda memiliki file di direktori kerja Anda saat ini bernama ubuntuone-ffdjhjer
, maka bash akan mencoba mengeksekusi sudo apt-get remove --purge ubuntuone-ffdjhjer
, yang mungkin akan gagal.
Di zsh
(dan di bash
) Anda dapat menggunakan tanda kutip tunggal untuk mengatakan itu bukan untuk memperluas wildcard tetapi untuk meneruskannya, seperti pada:
sudo apt-get remove --purge 'ubuntuone-*'
dpkg -l 'linux*'
bash untuk melihat semua kernel yang terinstal.
Mungkin agak terlambat jawaban ini, tetapi ada cara untuk memperbaikinya. Dari baris perintah jalankan:
unsetopt no_match
shopt -s failglob
di bash
untuk memperbaiki bash
sehingga berperilaku seperti zsh
dan kerang modern lainnya seperti fish
atau tcsh
yang telah tetap bahwa misfeature dari Bourne shell dimana perintah mungkin masih berjalan bahkan jika gumpalan tidak cocok.