ls -l listando lista de diretórios

ls -l listando lista de diretórios

Alguma ideia de por que existem resultados diferentes. Alguns dos quais são enganosos

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

Responder1

Não sei qual resultado você esperava nem o que é enganoso para você. Você obteve resultados diferentes porque forneceu entradas diferentes a cada vez.

Fatos relevantes:

  • lssem operandos funciona como se o único operando fosse .. Observe -rltdque são opções, não operandos.
  • Normalmente, se o operando for um diretório, lsimprimirá as entradas do diretório. Este é um tratamento especial porque na maioria dos casos (se o operando for um arquivo normal, arquivo especial, fifo,…) lsapenas imprime informações sobre o operando.
  • -ddesativa esse comportamento especial para diretórios.
  • -Rfaz lslistar recursivamente os subdiretórios encontrados.
  • *nos seus exemplos foi expandido pelo seu shell antes lsmesmo de ser iniciado. *expande para todas as entradas no diretório de trabalho atual com nomes que não começam com .. Aparentemente, no seu caso, havia apenas uma entrada correspondente no diretório atual: new_dir.

Estes são os comandos que você digitou, reuni-os para facilitar a leitura:

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

Isto é o que você realmente executa, após a expansão pelo shell; respectivamente:

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

Estes são comandos equivalentes com operandos explícitos; respectivamente:

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

E estas são consultas descritivas (opções comuns -rltnão explicadas, porque entendo que não são o problema):

  • ls -rlt .- o que esta dentro .?
  • ls -rlt new_dir- o que esta dentro new_dir?
  • ls -rltd .- o que é .?
  • ls -rltd new_dir- o que é new_dir?
  • ls -rltR .– o que está dentro .e cada subdiretório encontrado?
  • ls -rltR new_dir– o que está dentro new_dire cada subdiretório encontrado?

Você obteve respostas para essas perguntas. As perguntas são diferentes, assim como as respostas.

informação relacionada