Ogni file e cartella del file system ha una cosiddetta struttura Inode in cui sono memorizzati i metadati di questo oggetto. In essa sono memorizzati il proprietario, il gruppo di proprietari, l'ora di modifica, la creazione e l'accesso al file, oltre ad altre informazioni. Queste informazioni possono essere visualizzate non solo con l'aiuto di strumenti di debug del file system. Alcune informazioni sono mostrate dall'utilità ls
, ma se si ha bisogno di più, si può usare il comando stat
. Di seguito vi spiegheremo come utilizzare questo comando in Linux.
La sintassi del comando è semplice. È necessario passargli le opzioni e il percorso del file per il quale si desidera visualizzare le informazioni:
$ stat [options] /path/to/file
Non è necessario passare le opzioni e non ce ne sono molte:
-L, dereferenziazione
- mostra le informazioni sul file invece di un collegamento simbolico;
-f, -file-system
- mostra informazioni sul file system in cui si trova il file;
-c, --format
- consente di specificare il formato di output invece di quello standard; ogni file viene emesso da una nuova riga;
--printf
- simile a --format
, solo che per una nuova riga si deve usare ;
-t, --terse
- mostra le informazioni in forma molto breve, in una sola riga;
--version
- mostra la versione dell'utilità.
Vediamo alcuni esempi di utilizzo. Per vedere le informazioni su un file, è sufficiente eseguire il programma senza opzioni, passandogli il percorso del file, ad esempio /etc/passwd
:
$ stat /etc/passwd
Output del programma:
File
- il percorso del file per il quale vengono mostrate le informazioni;
Dimensione
- la dimensione del file in byte;
IO
Block - la dimensione del blocco del file system in byte;
Blocchi
- numero di blocchi del file system occupati dal file;
Dispositivo
- identificatore del dispositivo, ad esempio HDD, su cui è salvato il file;
Inode - numero di Inode univoco del file;
Link
- numero di hard link a questo file;
Accesso -
diritti diaccesso
al file;
Uid
- identificatore e nome dell'utente-proprietario del file;
Gid
- identificatore e nome del gruppo di file;
Accesso
- l'ora dell'ultimo accesso al file;
Modify
- ora in cui il contenuto del file è stato modificato per l'ultima volta;
Modificato
- l'ora dell'ultima modifica degli attributi o del contenuto del file;
Created(Birth
) - riservato alla visualizzazione della data di creazione originale del file, ma non ancora implementato.
Dobbiamo parlare ancora un po' del formato dell'ora. Ad esempio, l'ora dell'ultimo accesso al file è 2020-12-02 18:25:01.043831739 +0200. Questo orario viene mostrato tenendo conto del fuso orario. I numeri +0200 indicano che il fuso orario del computer che ha creato o modificato il file è di due ore superiore all'UTC, cioè Europa/Kiev in orario invernale.
Se si tenta di passare un collegamento simbolico all'utilità, questa mostrerà solo le informazioni dell'Inode del collegamento stesso:
$ stat /etc/passwdlin
Per vedere le informazioni sul file puntato dal collegamento, utilizzare l'opzione -L
:
$ stat -L /etc/passwdlink
È possibile passare più di un file:
$ stat /etc/passwd /etc/group
Per formattare l'output si possono usare le seguenti sequenze di caratteri:
%A
- diritti di accesso;
%b
- numero di blocchi occupati;
%F
- tipo di file;
%g
- identificatore del gruppo di file;
%G
- nome del gruppo di file;
%i
- identificatore di inode;
%n
- nome del file;
%s
- dimensione del file;
%u
- identificatore del proprietario del file;
%U
- nome del proprietario del file;
%x
- ora dell'ultimo accesso;
%y
- ora dell'ultima modifica del contenuto;
%z
- ora dell'ultima modifica del contenuto o degli attributi.
Queste non sono tutte le sequenze possibili; è possibile trovarne altre nella guida dell'utility:
$ man stat
Ad esempio, visualizziamo solo il nome di un file e l'ora dell'ultima modifica del suo contenuto:
$ stat --printf "File %n has been modified %y " /etc/passwd /etc/group
Se si desidera visualizzare informazioni sul file system in cui si trova il file, è necessario usare l'opzione -f
:
$ stat -f /etc/passwd
Vediamo il significato dei campi visualizzati dall'utility:
File
- il nome del file;
Tipo
- tipo di file system;
ID
- identificatore del file system;
Lunghezza del nome(Namelen
) - la lunghezza massima del nome nel file system;
Dimensionedel blocco
- la quantità di dati in una richiesta di lettura o scrittura per una velocità ottimale;
Dimensionefondamentale del blocco
- dimensione fisica del blocco nel file system.
Seguono il numero totale di blocchi nel sistema e il numero di blocchi liberi.