Cada ficheiro e pasta no sistema de ficheiros tem uma estrutura denominada Inode, onde são armazenados os metadados deste objeto. Esta estrutura armazena o proprietário, o grupo de proprietários, a hora de modificação, a criação e o acesso ao ficheiro, bem como outras informações. Pode ser vista não só com a ajuda de ferramentas de depuração do sistema de ficheiros. Certas informações são mostradas pelo utilitário ls
, mas se precisar de mais, pode usar o comando stat
. De seguida, vamos dizer-lhe como utilizar este comando no Linux.
A sintaxe do comando é simples. Precisa que lhe sejam passadas opções e o caminho para o ficheiro para o qual quer ver a informação:
$ stat [options] /path/to/file
Não é necessário passar opções e não há muitas delas:
-L, dereference
- mostra a informação do ficheiro em vez de uma ligação simbólica;
-f, --file-system
- mostra informação sobre o sistema de ficheiros no qual o ficheiro está localizado;
-c, --format
- permite-lhe especificar o formato de saída em vez do formato padrão, cada ficheiro é emitido a partir de uma nova linha;
--printf
- semelhante a --format
, só que para uma nova linha deve usar ;
-t, --terse
- mostra a informação de uma forma muito breve, numa única linha;
--version
- mostra a versão do utilitário.
Vamos ver alguns exemplos de uso. Para ver informação sobre um ficheiro, é suficiente correr o programa sem opções passando-lhe o caminho para o ficheiro, por exemplo /etc/passwd
:
$ stat /etc/passwd
Saída do programa:
Ficheiro
- o caminho para o ficheiro para o qual a informação é mostrada;
Tamanho
- o tamanho do ficheiro em bytes;
BlocoIO
- o tamanho do bloco do sistema de ficheiros em bytes;
Blocos
- número de blocos do sistema de ficheiros ocupados pelo ficheiro;
Dispositivo
- identificador do dispositivo, por exemplo, HDD, no qual o ficheiro é guardado;
Inode - número único de Inode deste ficheiro;
Ligações
- número de ligações físicas a este ficheiro;
Acesso -
direitosde acesso
ao ficheiro;
Uid
- identificador e nome do utilizador-proprietário do ficheiro;
Gid
- identificador e nome do grupo do ficheiro;
Acesso
- a hora do último acesso ao ficheiro;
Modificar
- hora em que o conteúdo do ficheiro foi modificado pela última vez;
Alterado
- a hora em que os atributos do ficheiro ou o conteúdo do ficheiro foram alterados pela última vez;
Criado(Nascimento
) - reservado para mostrar a data de criação original do ficheiro, mas ainda não implementado.
Precisamos de falar um pouco mais sobre o formato da hora. Por exemplo, a hora do último acesso ao ficheiro é 2020-12-02 18:25:01.043831739 +0200. Esta hora é apresentada tendo em conta o fuso horário. E os números +0200 mostram que o fuso horário do computador que criou ou modificou este ficheiro é duas horas superior ao UTC, ou seja, Europa/Kiev no horário de inverno.
Se você tentar passar uma ligação simbólica para o utilitário, ele mostrará apenas informações do Inode da própria ligação:
$ stat /etc/passwdlin
Para ver informações sobre o ficheiro apontado pela ligação, use a opção -L
:
$ stat -L /etc/passwdlink
É possível passar mais de um ficheiro:
$ stat /etc/passwd /etc/group
Para formatar a saída, pode-se usar as seguintes seqüências de caracteres:
%A
- direitos de acesso;
%b
- número de blocos ocupados;
%F
- tipo de ficheiro;
%g
- identificador do grupo de ficheiros;
%G
- nome do grupo de ficheiros;
%i
- identificador de inode;
%n
- nome do ficheiro;
%s
- tamanho do ficheiro;
%u
- identificador do proprietário do ficheiro;
%U
- nome do proprietário do ficheiro;
%x
- hora do último acesso;
%y
- hora da última modificação do conteúdo;
%z
- hora da última modificação do conteúdo ou dos atributos.
Estas não são todas as sequências possíveis, pode encontrar mais na ajuda do utilitário:
$ man stat
Por exemplo, vamos mostrar apenas o nome de um ficheiro e a hora da última modificação do seu conteúdo:
$ stat --printf "File %n has been modified %y " /etc/passwd /etc/group
Se quiser ver informações sobre o sistema de ficheiros onde o ficheiro está localizado, deve usar a opção -f
:
$ stat -f /etc/passwd
Vejamos o que significam os campos que o utilitário exibe:
Arquivo
- o nome do arquivo;
Type
- tipo de sistema de ficheiros;
ID
- identificador do sistema de ficheiros;
Comprimento do nome(Namelen
) - o comprimento máximo do nome no sistema de ficheiros;
Tamanhodo bloco
- a quantidade de dados num pedido de leitura ou escrita para uma velocidade óptima;
Tamanho dobloco fundamental
- tamanho do bloco físico no sistema de ficheiros.
Seguem-se o número total de blocos no sistema e o número de blocos livres.