No Unix ls -l
nos dá uma longa lista de arquivos e diretórios.
ls -lt
além disso , classifica os arquivos por hora, ou seja, a última alteração ou modificação. Isso deve ser diferenciado de,
ls -lu
que fornece a listagem longa e o tempo de acesso e classifica os arquivos de az, não por último acesso. Eu esperaria ls -lu
classificar os arquivos por tempo de acesso, mas para isso preciso:
ls -lut
que forneça a listagem em formato longo, imprima o tempo de acesso e classifique por tempo de acesso.
ERGO,
-t
deve significar classificar por tempo, modificado ou tempo de acesso, enquanto que
-u
significa apenas listar o tempo de acesso. Não significa listar e classificar por tempo de acesso. Sem nenhum argumento adicional, -t
parece significar listar por hora modificada e classificar por hora modificada. O acima está correto. Se não, onde estou errando?
A
ls
página man pode ajudar a esclarecer essas opções.A
-l
opção controla o formato de saída, produzindo uma listagem 'longa'.A
-t
opção classifica por hora de modificação. Este valor já está presente no formato longo.A
-u
opção se comporta de maneira diferente com base nas opções com as quais é usada.ls -u
, ele classifica por tempo de acesso.-l
opção, exibe o tempo de acesso, mas classifica por nome. Nesse caso, ele atua como um modificador de saída em vez de uma opção de classificação.-l
e-t
, mostra o tempo de acesso e também ordena por ele.A
-c
opção funciona da mesma forma com a propriedade ctime.A complexidade vem da necessidade de modificar o formato de listagem longa. Várias outras opções funcionam dessa maneira:
-lo
suprimir informações de grupo,-lG
suprimir informações de proprietário,-lh
exibir tamanhos em formato legível e assim por diante).As opções de estilo GNU do
ls
manual tornam isso mais fácil de entender.-l
é--format=long
.-t
é--sort=time
.-u
é--time=atime
.Assim
-lu
é--format=long --time=atime
. Ou seja, mostre a listagem longa, mas com atime em vez do mtime padrão.E
-ltu
é--format=long --sort=time --time=atime
. Nesse caso, mostre o atime e classifique por ele.-t
significa classificar por tempo — algum campo de tempo.-u
significa trabalhar com tempo de acesso em vez de tempo de modificação (para exibição e/ou classificação, conforme aplicável).Então você entendeu corretamente; você está apenas se confundindo ao torná-lo mais complicado do que é. Dê um passo para trás e respire fundo, e você verá que não é tão complicado.
PS Observe que
-t
sem-l
(ou uma opção semelhante, como-o
ou-g
) não exibirá nenhum campo de tempo.Você está correto na maioria das vezes,
-t
significa "classificar por hora" e-u
significa "usar o timestamp atime" (ao classificar com-t
ou ao mostrar o timestamp com-l
). A opção POSIX-u
não implica alterar a ordem padrão de classificação, a menos que-t
também seja usada para solicitar explicitamente a classificação por um carimbo de data/hora.A especificação POSIX de
ls
tem os seguintes bits de texto:No entanto, o pessoal do GNU achou que seria conveniente deixar
ls -u
também classificar por atime, pois de outra forma não haveria diferença entre as saídas dels -u
els
(ambos seriam classificados por nome e nenhum carimbo de data/hora seria mostrado). É por isso que o GNUls
funciona de forma diferente da implementação de qualquer outro sistema dols
.A documentação de
ls
um sistema GNU resume isso comoO que não é mencionado neste pequeno texto é que quaisquer outras opções que forneçam um formato de saída semelhante
-l
como , por exemplo-o
,-g
e-n
, também removem o efeito de classificação da-u
opção como-l
faz. Todas essas opções têm o texto "like but, ..." no manual-l
GNU .ls
A
-c
opção no GNUls
depende de outras opções de maneira semelhante para classificar/exibir o timestamp ctime.O GNU
ls
tem funcionado assim desde 1999 ou por aí.Independentemente de qual implementação
ls
você está usando, para classificar a saída de formato longo em um carimbo de data/hora, você terá que usar-t
. Use-l -ut
para classificar por hora,-l -ct
para classificar por ctime ou apenas-l -t
para classificar por mtime.