ls -l Verzeichnisliste auflisten

ls -l Verzeichnisliste auflisten

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:

  • lsohne 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 lsEinträ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) lsnur Informationen über den Operanden gedruckt werden.
  • -ddeaktiviert dieses spezielle Verhalten für Verzeichnisse.
  • -Rlistet die gefundenen Unterverzeichnisse rekursiv auf ls.
  • *in Ihren Beispielen wurde von Ihrer Shell erweitert, bevor lses ü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 -rltwerden nicht erklärt, da sie meines Wissens nicht das Problem sind):

  • ls -rlt .- Was ist innen .?
  • ls -rlt new_dir- Was ist innen new_dir?
  • ls -rltd .- was ist .?
  • ls -rltd new_dir- was ist new_dir?
  • ls -rltR .– was befindet sich im Inneren .und in jedem angetroffenen Unterverzeichnis?
  • ls -rltR new_dir– was befindet sich im Inneren new_dirund in jedem angetroffenen Unterverzeichnis?

Sie haben Antworten auf diese Fragen erhalten. Die Fragen sind unterschiedlich, also sind es auch die Antworten.

verwandte Informationen