Metodi di pagamento Abuse

Cosa fa il comando stat in Linux

14.11.2021, 16:15

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.

Cosa fa il comando

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.