Ich habe viele Fragen und Antworten wie diese und diese gelesen
Ich weiß, dass Wildcards von der Shell vor dem Ausführen eines Befehls erweitert werden und ein Feature der Shell sind. Auch Wildcards funktionieren mit Befehlen, die viele Argumente akzeptieren können. In find . -name *.rb
wenn wir mehr als eine Datei im aktuellen Verzeichnis haben find
wird uns einen Fehler , da find nicht mehrere Argumente und die Art und Weise akzeptieren können zu lösen diese sind:
find . -name "*.rb"
find . -name '*.rb'
find . -name \*.rb
Wir entziehen uns dem Sternchen und verhindern die Erweiterung durch die Shell, aber Wildcards sind ein Merkmal der Shell. Wenn wir entkommen, weiß die Asterisk-Shell nichts über ihre Bedeutung und sollte eine Datei mit dem Namen *.rb
finden. Wie wird der Asterisk in diesem Fall erweitert?
*
in Anführungszeichen gesetzt wird, wird es von der Shell nicht erweitert, und das Argument einschließlich des Glob wird an den Befehl übergeben, der das Glob verstehen kann. Dies gilt auch für alle Befehle, die reguläre Ausdrücke akzeptieren, die immer in Anführungszeichen gesetzt werden sollten ...find
[archive filename single argument] [list of files to extract]
" haben).