Antworten:
Wenn bash keine Übereinstimmung finden kann, wird die Literalzeichenfolge mit einem nicht erweiterten *
Wert an die Anwendung übergeben . Zum Beispiel:
$ ls
foo
$ cat /tmp/test
echo $1
$ /tmp/test *foo*
foo
$ /tmp/test *bar*
*bar*
bash
erweitert, *foo*
weil es zusammenpasste, aber *bar*
direkt bestanden, weil es nicht stimmte. Die nullglob
Option weist bash an, nicht übereinstimmende Muster stattdessen in die leere Zeichenfolge aufzulösen:
$ shopt -s nullglob
$ /tmp/test *bar*
$
zsh: no matches found
.
no_nomatch
dieses Verhalten auslösen.
find . -name *foo*
mitfind . -name '*foo*'
ihm wird es dem Platzhalter entspricht wie erwartet funktionieren.