O que são as opções - e - td no comando ls?

0

Você poderia explicar o que cada opção neste comando ls faz: ls -td -- */ ? O resultado de tal comando ficaria como abaixo:

$ ls
$ ls -al
total 4
drwxr-xr-x   5 root root   68 Jun  4 09:58 .
drwxrwxrwt. 13 root root 4096 Jun  4 10:05 ..
drwxr-xr-x   5 root root   36 May 31 15:48 05-31-2018
drwxr-xr-x   5 root root   36 Jun  4 09:45 06-04-2018
drwxr-xr-x   2 root root    6 Jun  4 09:56 06-05-2018
-rw-r--r--   1 root root    0 Jun  4 09:58 test

$  ls -td -- */ 
06-05-2018/  06-04-2018/  05-31-2018/

# To get latest folder created:
$ ls -td -- */ | head -n 1
06-05-2018/

Não tenho ideias sobre o que cada opção faria com o comando ls .

    
por ilkkachu 04.06.2018 / 16:26

1 resposta

1

-td são as duas opções -t e -d escritas juntas. -t informa ls para ordenar a saída com base no tempo e -d pede para mostrar os diretórios nomeados na linha de comando como eles próprios, em vez de seu conteúdo.

A opção -- é, até onde eu sei, não documentada explicitamente para muitos comandos que a suportam e se tornou uma sintaxe ligeiramente obscura.
Ele encontra suas origens na função getopt e é usado para delimitar o fim das opções e o início dos parâmetros .

Você usaria principalmente essa sintaxe -- para usar parâmetros que, de outra forma, seriam parecidos com opções.

Uma boa ilustração é tentar manipular arquivos que iniciam seus nomes com um hífen, como um arquivo chamado "-rm -rf"

Crie com touch -- '-rm -rf'

ls -la
total 0
-rw-r--r--   1 herman  wheel    0 Jun  4 16:46 -rm -rf

ls -la *
ls: illegal option --
usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...]

ls -la -- * 
total 0
-rw-r--r--   1 herman  wheel    0 Jun  4 16:46 -rm -rf

e

rm -i *
rm: illegal option -- m
usage: rm [-f | -i] [-dPRrvW] file ...
       unlink file

versus

rm -i -- *

Para o significado das opções de linha de comando em geral, este nugget muito básico:

Quase todos os comandos do Linux vêm com um manual on-line explicando seu uso e várias opções que modificam seu comportamento. Que manual pode ser acessado com o comando man , ou seja,

man ls

Teste man man para obter uma explicação do manual.

    
por 04.06.2018 / 16:54