Ich weiß, wie *
wird in Befehlen wie ls
interpretiert zum Beispiel. Aber wenn Sie versuchen, *
auszuführen Als Befehl versucht die Shell, die erste Datei oder das erste Verzeichnis in Ihrem Arbeitsverzeichnis auszuführen. Warum ist das? Wie versteht die Shell *
?
Akzeptierte Antwort:
Anders als in einigen anderen Betriebssystemen ist es in Unixen die Shell, die Dateinamen-Platzhalter erweitert. Es erweitert zuerst Parametererweiterungen und Globs und verwendet dann das (jetzt) erste Wort als Namen für den auszuführenden Befehl.
Das ist auch der Grund, warum Dateien, die mit einem führenden Bindestrich benannt sind, problematisch sein können:ein Glob wie *
wird auf die Dateinamen erweitert, optional kann ein Name gewählt werden, der mit einem Bindestrich beginnt. (Das beängstigende Beispiel ist, dass eine Datei namens -r
im Arbeitsverzeichnis würde rm *
machen alles rekursiv entfernen…)
Normalerweise würde man *
nicht verwenden als erstes Element in jeder Befehlszeile, sodass es wahrscheinlich keine Probleme verursacht, wenn die erste Datei den auszuführenden Befehl bestimmt.