it-swarm.com.de

Warum funktioniert dieser Platzhalter nicht so, wie ich es erwartet habe?

In meinem Benutzerordner befinden sich Ordner wie D ropbox, D ocuments, D ownloads & d ump.

ls a* sollte alle Dateien auflisten, deren Name mit a beginnt. Richtig? Aber wenn ich den Befehl ls d* gebe, anstatt nur dump anzuzeigen, wird mir das Verzeichnis ls of dump angezeigt. Und wenn ich den Befehl als ls D* gebe, zeigt er ls aller Falten an, beginnend mit D

Welchen Teil habe ich vermisst, um es zu verstehen?

Bearbeiten: Screenshot anhängen ls screenshot

11
Ashfame

Laut Bash-Manpage:

bash durchsucht jedes Wort nach den Zeichen *,? und [. Wenn eines dieser Zeichen angezeigt wird, wird das Wort als Muster angesehen und durch eine alphabetisch sortierte Liste von Dateinamen ersetzt, die mit dem Muster übereinstimmen

und vom Infoknoten für ls

Das ls-Programm listet Informationen zu Dateien (jeglichen Typs, einschließlich Verzeichnissen) auf. Optionen und Dateiargumente können wie gewohnt beliebig gemischt werden.

Bei Nicht-Optionsbefehlszeilenargumenten, die Verzeichnisse sind, listet 'ls' standardmäßig den Inhalt von Verzeichnissen auf, nicht rekursiv, und lässt Dateien weg, deren Namen mit '.' Beginnen. Bei anderen Nichtoptionsargumenten wird standardmäßig nur der Dateiname mit "ls" aufgelistet. Wenn keine Nichtoptionsargumente angegeben werden, listet 'ls' den Inhalt des aktuellen Verzeichnisses auf.

wenn Sie also ls d* eingeben, wird d * zu einer sortierten Liste aller Datei-/Verzeichnisnamen erweitert, die mit d beginnen. So wird dein Befehl

ls dump

und da dump ein Verzeichnisname ist, erhalten Sie die Auflistung aller Dateien im Verzeichnis "dump", aber wenn Sie ls D* angeben, wird D * zu "Desktop Documents)" erweitert Downloads Dropbox ", so wird der Befehl

ls Desktop Documents Downloads Dropbox

und da dies alles verzeichnisse sind, erhalten sie die auflistung der dateien in einzelnen verzeichnissen. Wenn eine Datei im aktuellen Verzeichnis mit D begonnen hätte, wäre sie separat aufgeführt worden.

17
binW

wenn sowohl d * als auch D * Dateien und Ordner auflisten, die mit d * bzw. D * übereinstimmen, ist das Verhalten dasselbe, es muss ein Fehler in Ihrem Test aufgetreten sein.

Wenn Sie nur die Ordnernamen und nicht den Ordnerinhalt auflisten möchten, müssen Sie "-d" verwenden:

ls -d D*
7
João Pinto

Wie oben vorgeschlagen, ist die Option -d eine gute Wahl. Hinzufügen

alias ld='ls -d'

zu meiner ~/.bashrc -Datei funktioniert gut für mich.

0
user3179473