Laut Bash-Manpage:
bash durchsucht jedes Wort nach den Zeichen *,? und [. Wenn eines dieser Zeichen angezeigt wird, wird das Wort als Muster betrachtet und durch eine alphabetisch sortierte Liste von Dateinamen ersetzt, die dem Muster entsprechen
und vom Info-Knoten für ls
Das Programm "ls" listet Informationen zu Dateien (jeglichen Typs, einschließlich Verzeichnissen) auf. Optionen und Dateiargumente können wie gewohnt beliebig gemischt werden.
Bei Befehlszeilenargumenten ohne Option, bei denen es sich um Verzeichnisse handelt, listet 'ls' standardmäßig den Inhalt von Verzeichnissen nicht rekursiv auf und lässt Dateien mit Namen weg, die mit '.' Beginnen. Bei anderen Argumenten ohne Option listet "ls" standardmäßig nur den Dateinamen auf. Wenn keine Argumente ohne Option angegeben sind, listet 'ls' den Inhalt des aktuellen Verzeichnisses auf.
Wenn Sie also geben ls d*
, wird d * zu einer sortierten Liste aller Datei- / Verzeichnisnamen erweitert, die mit d beginnen. So wird Ihr Befehl
ls dump
und da dump ein Verzeichnisname ist, erhalten Sie die Liste aller Dateien im Verzeichnis "dump". Wenn Sie jedoch angeben ls D*
, wird D * zu " Dropbox für Desktop-Dokumente herunterladen " erweitert, sodass der Befehl lautet
ls Desktop Documents Downloads Dropbox
und da dies alles Verzeichnisse sind, erhalten Sie die Liste der Dateien in einzelnen Verzeichnissen. Wenn es eine Datei gegeben hätte, die mit D im aktuellen Verzeichnis beginnt , wäre sie separat aufgeführt worden.
ls p*
und es wurde eine Datei angezeigt, weil sie existiert und einels P*
zeigt den öffentlichen Ordner " Bilder ", da keine Datei mit P beginnt . Und als ich ein Verzeichnis namens poo erstellt habe , wurde es amls p*
ls d * und D * listen beide Dateien und Ordner auf, die mit d * bzw. D * übereinstimmen. Das Verhalten ist das gleiche. Bei Ihrem Test muss ein Fehler aufgetreten sein.
Wenn Sie nur die Ordnernamen und nicht den Ordnerinhalt auflisten möchten, müssen Sie "-d" verwenden:
quelle
Wie oben vorgeschlagen, ist die
-d
Option der richtige Weg. Hinzufügenzu meiner
~/.bashrc
Datei funktioniert gut für mich.quelle
ld - The GNU linker
, wodurch das OP keine Programme kompilieren und verknüpfen kann. Verwenden Siealias lsd='ls -d'
stattdessen. Bevor Aliasing etwas wiefoo
tun immertype foo
zu sehen , obfoo
bereits als Name für etwas verwendet wird, und entscheiden , ob die Bequemlichkeit der Alias - Überschreibung des Verlust des Zugangs zum vorherigenfoo