ls -l lista de directorios

ls -l lista de directorios

¿Alguna idea de por qué hay resultados diferentes? Algunos de los cuales son engañosos.

-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$

Respuesta1

No sé qué resultado esperaba ni qué le resulta engañoso. Obtuviste resultados diferentes porque proporcionaste entradas diferentes cada vez.

Hechos relevantes:

  • lssin operandos funciona como si el único operando fuera .. Tenga en cuenta -rltdque estas son opciones, no operandos.
  • Normalmente, si el operando es un directorio, lsimprimirá las entradas del directorio. Este es un tratamiento especial porque en la mayoría de los casos (si el operando es un archivo normal, un archivo especial, quince,…) lssimplemente imprime información sobre el operando.
  • -ddeshabilita este comportamiento especial para directorios.
  • -Rhace lsuna lista recursiva de los subdirectorios encontrados.
  • *en sus ejemplos fue ampliado por su shell lsincluso antes de que comenzara. *se expande a todas las entradas en el directorio de trabajo actual con nombres que no comienzan con .. Aparentemente, en su caso solo había una entrada coincidente en el directorio actual: new_dir.

Estos son comandos que usted escribió, los recopilé para facilitar su lectura:

ls -rlt
ls -rlt *
ls -rltd
ls -rltd *
ls -rltR
ls -rltR *

Estos son los que realmente ejecuta, después de la expansión por parte del shell; respectivamente:

ls -rlt
ls -rlt new_dir
ls -rltd
ls -rltd new_dir
ls -rltR
ls -rltR new_dir

Estos son comandos equivalentes con operandos explícitos; respectivamente:

ls -rlt .
ls -rlt new_dir
ls -rltd .
ls -rltd new_dir
ls -rltR .
ls -rltR new_dir

Y estas son consultas descriptivas (las opciones comunes -rltno se explican porque entiendo que no son el problema):

  • ls -rlt .– ¿Qué hay dentro .?
  • ls -rlt new_dir– ¿Qué hay dentro new_dir?
  • ls -rltd .- qué es .?
  • ls -rltd new_dir- qué es new_dir?
  • ls -rltR .– ¿Qué hay dentro .y en cada subdirectorio encontrado?
  • ls -rltR new_dir– ¿Qué hay dentro new_diry en cada subdirectorio encontrado?

Tienes respuestas a estas consultas. Las consultas son diferentes, también lo son las respuestas.

información relacionada