O stat
comando Linux mostra muito mais detalhes do que ls
faz. Dê uma olhada por trás da cortina com este utilitário informativo e configurável. Mostraremos como usá-lo.
Índice
O ls
comando é ótimo no que faz – e faz muito – mas com o Linux, parece que sempre há uma maneira de ir mais fundo e ver o que está abaixo da superfície. E, muitas vezes, não se trata apenas de levantar a ponta do tapete. Você pode rasgar as tábuas do piso e cavar um buraco. Você pode descascar o Linux como uma cebola.
ls
irá mostrar-lhe uma boa quantidade de informações sobre um arquivo, como quais permissões são definidas nele, seu tamanho e se é um arquivo ou um link simbólico . Para exibir essas informações, ls
lê-as de uma estrutura de sistema de arquivos chamada inode .
Cada arquivo e diretório possui um inode. O inode contém metadados sobre o arquivo , como quais blocos de sistema de arquivos ele ocupa e os carimbos de data associados ao arquivo. O inode é como um cartão de biblioteca para o arquivo. Mas ls
só mostrarei algumas das informações. Para ver tudo, precisamos usar o stat
comando.
Por exemplo ls
, o stat
comando tem muitas opções. Isso o torna um ótimo candidato para o uso de aliases. Depois de descobrir um conjunto específico de opções que stat
fornecem a saída que você deseja, envolva-o em um alias ou função shell . Isso o torna muito mais conveniente de usar e você não precisa se lembrar de um conjunto misterioso de opções de linha de comando.
Vamos usar ls
para nos dar uma longa lista ( -l
opção) com tamanhos de arquivo legíveis ( -h
opção):
ls -lh ana.h
Da esquerda para a direita, as informações que ls fornece são:
ana.c
.Vamos dar uma olhada com stat
:
stat ana.h
As informações que obtemos stat
são:
stat
na linha de comando, mas pode ser diferente se estivermos olhando para um link simbólico.stat
em um diretório, este número representa o número de arquivos no diretório, incluindo o “.” para o diretório atual e a entrada “..” para o diretório pai.rwx
formatos octal e tradicional (ler, escrever, executar formatos).relatime
, que tenta otimizar as gravações no disco rígido necessárias para atualizar o tempo de acesso . Simplificando, o tempo de acesso é atualizado se for mais antigo do que o tempo modificado.Os carimbos de data / hora são sensíveis ao fuso horário. O -0500
no final de cada linha mostra que esse arquivo foi criado em um computador em um fuso horário UTC ( Tempo Universal Coordenado ) cinco horas adiantado em relação ao fuso horário do computador atual. Portanto, este computador está cinco horas atrasado em relação ao computador que criou este arquivo. Na verdade, o arquivo foi criado em um computador de fuso horário do Reino Unido e estamos examinando-o aqui em um computador no fuso horário do Leste dos EUA.
Os carimbos de data / hora de modificação e alteração podem causar confusão porque, para os não iniciados, seus nomes soam como se tivessem o mesmo significado.
Vamos usar chmod
para modificar as permissões de arquivo em um arquivo chamado ana.c
. Vamos torná-lo gravável por todos. Isso não afetará o conteúdo do arquivo, mas afetará os atributos do arquivo.
chmod + w ana.c
E então usaremos stat
para olhar os carimbos de data / hora:
stat ana.c
O carimbo de data / hora da mudança foi atualizado, mas o modificado não.
O timestamp modificado só será atualizado se o conteúdo do arquivo for alterado. O registro de data e hora da mudança é atualizado para mudanças de conteúdo e mudanças de atributo.
Para ter um relatório estatístico sobre vários arquivos de uma vez, passe os nomes dos arquivos para stat
na linha de comando:
stat ana.h ana.o
Para usar stat
em um conjunto de arquivos, use a correspondência de padrões. O ponto de interrogação “?” representa qualquer caractere único e o asterisco “*” representa qualquer sequência de caracteres. Podemos informar stat
para relatar qualquer arquivo chamado “ana” com uma extensão de uma única letra, com este comando:
stat ana.?
stat
pode relatar o status dos sistemas de arquivos, bem como o status dos arquivos. A -f
opção (sistema de arquivos) informa stat
para relatar sobre o sistema de arquivos em que o arquivo reside. Observe que também podemos passar um diretório como “/” para em stat
vez de um nome de arquivo.
stat -f ana.c
A informação que stat
nos dá é:
Blocos:
Inodes:
Se você usar stat
em um arquivo que é na verdade um link simbólico, ele reportará no link. Se você quiser stat
relatar sobre o arquivo para o qual o link aponta, use a -L
opção (desreferenciar). O arquivo code.c
é um link simbólico para ana.c
. Vejamos sem a -L
opção:
código estatístico.c
O nome do arquivo mostra code.c
apontando para ( ->
) ana.c
. O tamanho do arquivo é de apenas 11 bytes. Não existem blocos dedicados ao armazenamento deste link. O tipo de arquivo é listado como um link simbólico.
Claramente, não estamos olhando para o arquivo real aqui. Vamos fazer isso novamente e adicionar a -L
opção:
stat -L code.c
Isso agora está mostrando os detalhes do arquivo para o arquivo apontado pelo link simbólico. Mas observe que o nome do arquivo ainda é fornecido como code.c
. Este é o nome do link, não do arquivo de destino. Isso acontece porque esse é o nome que passamos stat
na linha de comando.
A -t
opção (concisa) stat
fornece um resumo condensado:
stat -t ana.c
Não há pistas fornecidas. Para entender – até que você memorize a sequência do campo – você precisa fazer uma referência cruzada dessa saída para uma stat
saída completa .
A melhor maneira de obter um conjunto diferente de dados stat
é usar um formato personalizado. Existe uma longa lista de tokens denominados sequências de formato. Cada um deles representa um elemento de dados. Selecione aqueles que deseja incluir na saída e crie uma string de formato. Quando chamamos stat
e passamos a string de formato para ele, a saída incluirá apenas os elementos de dados solicitados.
Existem diferentes conjuntos de sequências de formato para arquivos e sistemas de arquivos. A lista de arquivos é:
rwx
).A “época” é a época do Unix , que ocorreu em 01/01/1970 00:00:00 +0000 (UTC).
Para sistemas de arquivos, as sequências de formato são:
Existem duas opções que aceitam strings de sequências de formato. Estes são --format
e --printf
. A diferença entre eles é que --printf
interpreta as sequências de escape do estilo C , como nova linha \n
e tab \t
, e não adiciona automaticamente um caractere de nova linha à saída.
Vamos criar uma string de formato e passá-la para stat
. As sequências de formato a serem usadas são %n
para nome de arquivo, %s
para o tamanho do arquivo e %F
para o tipo de arquivo. Vamos adicionar a \n
sequência de escape ao final da string para garantir que cada arquivo seja tratado em uma nova linha. Nossa string de formato se parece com isto:
"O arquivo% n tem% s bytes e é% F \ n"
Vamos passar isso para stat
usar a --printf
opção. Vamos pedir stat
para relatar um arquivo chamado code.c
e um conjunto de arquivos correspondentes ana.?
. Este é o comando completo. Observe o sinal de igual “ =
” entre --printf
e a string de formato:
stat --printf = "O arquivo% n tem% s bytes e é um código% F \ n" ..c ana / ana.?
O relatório de cada arquivo é listado em uma nova linha, que é o que solicitamos. O nome do arquivo, o tamanho do arquivo e o tipo de arquivo são fornecidos para nós.
Os formatos personalizados fornecem acesso a ainda mais elementos de dados do que os incluídos na stat
saída padrão .
Como você pode ver, há um enorme escopo para extrair os elementos de dados específicos que são de seu interesse. Você provavelmente também pode ver por que recomendamos usar apelidos para os encantamentos mais longos e complexos.
Muitos aplicativos de limpeza estão disponíveis para Windows ao longo dos anos, mas hoje em…
Seu PlayStation 4 está congelado? Seus jogos favoritos continuam travando? Reiniciar seu PS4 pode resolver…
A popularidade das mensagens de texto significou aprender uma forma totalmente nova de comunicação. Você…
A foto dos "Pilares da Criação" tirada pelo Telescópio Espacial Hubble é uma das fotos…
O Proton Drive saiu de seu estágio beta há algumas semanas, mas o aplicativo real…
Para ver suas fotos mais de perto ou para uma edição precisa , você pode…