
Irgendeine Idee, warum es unterschiedliche Ergebnisse gibt? Einige davon sind irreführend
-bash-4.2$ mkdir -p new_dir/sub_dir/under_dir
-bash-4.2$ touch new_dir/sub_dir/under_dir/file.txt
-bash-4.2$
-bash-4.2$ ls -rlt
total 4
drwxrwxr-x 3 kony kony 4096 Oct 21 20:53 new_dir
-bash-4.2$
-bash-4.2$
-bash-4.2$ ls -rlt *
total 4
drwxrwxr-x 3 kony kony 4096 Oct 21 20:53 sub_dir
-bash-4.2$
-bash-4.2$
-bash-4.2$
-bash-4.2$ ls -rltd
drwxrwxr-x 3 kony kony 4096 Oct 21 20:53 .
-bash-4.2$
-bash-4.2$
-bash-4.2$ ls -rltd *
drwxrwxr-x 3 kony kony 4096 Oct 21 20:53 new_dir
-bash-4.2$
-bash-4.2$
-bash-4.2$
-bash-4.2$ ls -rtlR
.:
total 4
drwxrwxr-x 3 kony kony 4096 Oct 21 20:53 new_dir
./new_dir:
total 4
drwxrwxr-x 3 kony kony 4096 Oct 21 20:53 sub_dir
./new_dir/sub_dir:
total 4
drwxrwxr-x 2 kony kony 4096 Oct 21 20:53 under_dir
./new_dir/sub_dir/under_dir:
total 0
-rw-rw-r-- 1 kony kony 0 Oct 21 20:53 file.txt
-bash-4.2$
-bash-4.2$
-bash-4.2$
-bash-4.2$
-bash-4.2$ ls -rltR *
new_dir:
total 4
drwxrwxr-x 3 kony kony 4096 Oct 21 20:53 sub_dir
new_dir/sub_dir:
total 4
drwxrwxr-x 2 kony kony 4096 Oct 21 20:53 under_dir
new_dir/sub_dir/under_dir:
total 0
-rw-rw-r-- 1 kony kony 0 Oct 21 20:53 file.txt
-bash-4.2$
Antwort1
Ich weiß weder, welches Ergebnis Sie erwartet haben, noch, was Sie in die Irre führt. Sie haben ein anderes Ergebnis erhalten, weil Sie jedes Mal andere Eingaben gemacht haben.
Relevante Fakten:
ls
ohne Operanden funktioniert, als wäre der einzige Operand.
. Beachten Sie-rltd
, dass und solche Optionen und keine Operanden sind.- Wenn der Operand ein Verzeichnis ist, werden normalerweise
ls
Einträge im Verzeichnis gedruckt. Dies ist eine Sonderbehandlung, da in den meisten Fällen (wenn der Operand eine normale Datei, eine spezielle Datei, ein FIFO usw. ist)ls
nur Informationen über den Operanden gedruckt werden. -d
deaktiviert dieses spezielle Verhalten für Verzeichnisse.-R
listet die gefundenen Unterverzeichnisse rekursiv aufls
.*
in Ihren Beispielen wurde von Ihrer Shell erweitert, bevorls
es überhaupt gestartet wurde.*
wird auf alle Einträge im aktuellen Arbeitsverzeichnis erweitert, deren Namen nicht mit beginnen.
. In Ihrem Fall gab es anscheinend nur einen übereinstimmenden Eintrag im aktuellen Verzeichnis:new_dir
.
Dies sind die von Ihnen eingegebenen Befehle. Ich habe sie der besseren Lesbarkeit halber zusammengestellt:
ls -rlt
ls -rlt *
ls -rltd
ls -rltd *
ls -rltR
ls -rltR *
Folgendes führen Sie nach der Erweiterung durch die Shell tatsächlich aus:
ls -rlt
ls -rlt new_dir
ls -rltd
ls -rltd new_dir
ls -rltR
ls -rltR new_dir
Dies sind äquivalente Befehle mit expliziten Operanden. Folgendes ist zu beachten:
ls -rlt .
ls -rlt new_dir
ls -rltd .
ls -rltd new_dir
ls -rltR .
ls -rltR new_dir
Und dies sind beschreibende Abfragen (allgemeine Optionen -rlt
werden nicht erklärt, da sie meines Wissens nicht das Problem sind):
ls -rlt .
- Was ist innen.
?ls -rlt new_dir
- Was ist innennew_dir
?ls -rltd .
- was ist.
?ls -rltd new_dir
- was istnew_dir
?ls -rltR .
– was befindet sich im Inneren.
und in jedem angetroffenen Unterverzeichnis?ls -rltR new_dir
– was befindet sich im Innerennew_dir
und in jedem angetroffenen Unterverzeichnis?
Sie haben Antworten auf diese Fragen erhalten. Die Fragen sind unterschiedlich, also sind es auch die Antworten.