Saya pikir wildcard *dalam perintah find . -name *foo*digantikan oleh bash, namun perintah itu berfungsi kecuali *foo*cocok dengan sesuatu di direktori saat ini, maka itu tidak. Ini membingungkan.
bashdiperluas *foo*karena cocok, tetapi lulus *bar*langsung karena tidak cocok. The nullglobpilihan akan memberitahu bash untuk mengatasi pola yang tidak cocok dengan string kosong sebagai gantinya:
find . -name *foo*
denganfind . -name '*foo*'
itu akan memungkinkan cocok wildcard berfungsi seperti yang diharapkan.Jawaban:
Jika bash tidak dapat menemukan kecocokan, itu akan meneruskan string literal ke aplikasi dengan
*
s unexpanded. Sebagai contoh:bash
diperluas*foo*
karena cocok, tetapi lulus*bar*
langsung karena tidak cocok. Thenullglob
pilihan akan memberitahu bash untuk mengatasi pola yang tidak cocok dengan string kosong sebagai gantinya:sumber
zsh: no matches found
.no_nomatch
memicu perilaku ini.Jika Anda ingin
find
mendapatkan string yang tidak dikembangkan, maka Anda bisa mengutipnya atau melindungi wildcard dengan backslash.sumber