Introduzione
stat
è un'utilità della riga di comando che visualizza informazioni dettagliate su determinati file o file system.
Questo articolo spiega come usare il stat
comando su Linux.
Usando il comando Stat
La sintassi per il comando stat
è la seguente:
stat [OPTION]... FILE...
stat
accetta uno o più nomi FILE
di input e include una serie di opzioni che controllano il comportamento e l'output del comando.
Diamo un'occhiata al seguente esempio:
stat mylog.log
L'output sarà simile al seguente:
File: mylog.log
Size: 1239291 Blocks: 2424 IO Block: 512 regular file
Device: 2h/2d Inode: 24769797950641873 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ piero) Gid: ( 1000/ piero)
Access: 2019-09-28 20:01:33.130738600 +0200
Modify: 2019-08-08 03:04:23.000000000 +0200
Change: 2019-09-28 20:01:33.143704400 +0200
Birth: -
Quando viene richiamato senza alcuna opzione, vengono visualizzate le seguenti informazioni sul file:
- File: il nome del file.
- Dimensione: la dimensione del file in byte.
- Blocchi: il numero di blocchi allocati acquisiti dal file.
- IO Block - La dimensione in byte di ogni blocco.
- Tipo di file - (es. File normale, directory, collegamento simbolico ...)
- Dispositivo: numero del dispositivo in esadecimale e decimale.
- Inode: numero di nodo.
- Collegamenti: numero di collegamenti reali.
- Accesso: autorizzazioni per i file nei metodi numerici e simbolici.
- Uid: ID utente e nome del proprietario .
- Gid: ID gruppo e nome del proprietario.
- Contesto - Il contesto di sicurezza SELinux.
- Accesso: l'ultima volta che è stato effettuato l'accesso al file.
- Modifica: l'ultima volta che è stato modificato il contenuto del file.
- Modifica: l'ultima volta che è stato modificato l'attributo o il contenuto del file.
- Nascita: tempo di creazione del file (non supportato in Linux).
Visualizzazione delle informazioni sul file system
Per ottenere informazioni sul file system in cui risiede il file specificato, anziché le informazioni sul file stesso, utilizzare l' opzione -f
, ( --file-system
):
stat -f mylog.log
L'output del comando sarà simile al seguente:
File: "mylog.log"
ID: 100000000 Namelen: 255 Type: wslfs
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 60884223 Free: 40801995 Available: 40801995
Inodes: Total: 999 Free: 1000000
Quando stat
viene richiamato con l' opzione -f
, mostra le seguenti informazioni:
- File: il nome del file.
- ID: ID file system in esadecimale.
- Namelen - Lunghezza massima dei nomi dei file.
- Dimensione del blocco fondamentale: la dimensione di ciascun blocco nel file system.
- Blocchi: - Totale - numero di blocchi totali nel file system. Libero - Numero di blocchi liberi nel file system. Disponibile: numero di blocchi gratuiti disponibili per utenti non root.
- Inodes: Totale - Numero di inode totali nel file system. Free - Numero di inode gratuiti nel file system.
Dereference (Segui) Symlink
Per impostazione predefinita, stat
non segue i collegamenti simbolici . Se si esegue il comando su un collegamento simbolico, l'output includerà informazioni sul collegamento simbolico, non sul file a cui punta:
stat /etc/resolv.conf
File: /etc/resolv.conf -> ../run/resolvconf/resolv.conf
Size: 29 Blocks: 0 IO Block: 512 symbolic link
Device: 2h/2d Inode: 562949953739123 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-08-01 22:25:40.458719400 +0200
Modify: 2019-08-01 22:25:40.458719400 +0200
Change: 2019-08-01 22:25:40.458719400 +0200
Birth: -
Per dereferenziare (seguire) il collegamento simbolico e visualizzare le informazioni sul file a cui punta il collegamento simbolico, utilizzare l' opzione -L
, ( --dereference
):
stat -L /etc/resolv.conf
File: /etc/resolv.conf
Size: 195 Blocks: 0 IO Block: 512 regular file
Device: 7h/7d Inode: 1970324837678224 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-11-07 23:52:30.624839800 +0100
Modify: 2019-11-07 23:52:30.640820100 +0100
Change: 2019-11-07 23:52:30.640820100 +0100
Birth: -
Personalizzazione dell'output
Il comando stat
ha due opzioni che ti consentono di personalizzare l'output in base alle tue esigenze:, -c
( --format="format"
) e --printf="format"
.
La differenza tra queste due opzioni è che quando due o più file vengono utilizzati come operatori --format
aggiunge automaticamente una nuova riga dopo l'output di ciascun operando. L'opzione --printf
interpreta i backslash.
Esistono molte direttive di formato per file e file system che possono essere utilizzate con --format
e --printf
.
Ad esempio, per visualizzare solo il tipo di file utilizzare:
stat --format="%F" /dev/null
character special file
È possibile combinare un numero qualsiasi di direttive di formattazione e facoltativamente utilizzare separatori personalizzati tra di loro. Il separatore può essere un singolo carattere o una stringa:
stat --format="%n,%F" /dev/null
/dev/null,character special file
Per interpretare caratteri speciali come newline o tab, usa l'opzione --printf
:
stat --printf='Name: %n\nPermissions: %a\n' /etc
\n
stampa una nuova linea:
Name: /etc
Permissions: 755
stat
può anche visualizzare le informazioni in forma di terse. Questo formato è utile per l'analisi da parte di altre utilità.
Richiamare il comando con l' opzione -t
( --terse
) per stampare l'output in forma concisa:
stat -t /etc
/etc 512 0 41ed 0 0 2 562949953701446 1 0 0 1558449784 1573167150 1573167150 0 512
Per un elenco completo di tutte le direttive di formato per i tipi di file e file system utilizzare i comandi man stat
o stat --help
nel terminale.
Conclusione
Il comando stat
stampa informazioni su determinati file e file system.
In Linux, ci sono molti altri comandi che possono visualizzare informazioni su determinati file, ls
è il più usato, ma mostra solo una parte delle informazioni fornite dal comando stat
.