stat
è un'utilità della riga di comando che mostra informazioni dettagliate su determinati file o file system.
Questo articolo spiega come usare stat
comando.
Utilizzo di stat
Comando #
La sintassi per stat
il comando è il seguente:
stat [OPTION]... FILE...
stat
accetta uno o più input FILE
nomi e include una serie di opzioni che controllano il comportamento e l'output del comando.
Diamo un'occhiata al seguente esempio:
stat file.txt
L'output sarà simile a questo:
File: file.txt
Size: 4030 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 13633379 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ linuxize) Gid: ( 1000/ linuxize)
Access: 2019-11-06 09:52:17.991979701 +0100
Modify: 2019-11-06 09:52:17.971979713 +0100
Change: 2019-11-06 09:52:17.971979713 +0100
Birth: -
Quando viene invocato senza alcuna opzione, stat
visualizza le seguenti informazioni sul file:
- File - Il nome del file.
- Size - La dimensione del file in byte.
- Blocchi:il numero di blocchi allocati utilizzati dal file.
- Blocco IO - 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 inode.
- Link - Numero di collegamenti reali.
- Accesso - Autorizzazioni ai 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 di SELinux.
- Accesso:l'ultimo accesso al file.
- Modifica:l'ultima volta che il contenuto del file è stato modificato.
- Modifica:l'ultima volta che l'attributo o il contenuto del file è stato modificato.
- Nascita - Ora 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, invece delle informazioni sul file stesso, usa il -f
, (--file-system
) opzione:
stat -f file.txt
L'output del comando sarà simile a questo:
File: "package.json"
ID: 8eb53097b4494d20 Namelen: 255 Type: ext2/ext3
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 61271111 Free: 25395668 Available: 22265851
Inodes: Total: 15630336 Free: 13979610
Quando stat
viene invocato con -f
opzione, mostra le seguenti informazioni:
- File - Il nome del file.
- ID - ID del file system in formato esadecimale.
- Namelen - Lunghezza massima dei nomi di file.
- Dimensione fondamentale del blocco:la dimensione di ogni blocco nel file system.
- Blocchi:
- Totale - Numero di blocchi totali nel file system.
- Gratuito - Numero di blocchi liberi nel file system.
- Disponibile - Numero di blocchi gratuiti disponibili per utenti non root.
- Inode:
- Totale - Numero di inode totali nel file system.
- Gratuito - Numero di inode liberi nel file system.
Dereferenziare (seguire) collegamenti simbolici #
Per impostazione predefinita, stat
non segue collegamenti simbolici. Se esegui 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/systemd/resolve/stub-resolv.conf
Size: 39 Blocks: 0 IO Block: 4096 symbolic link
Device: 801h/2049d Inode: 8126659 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-11-06 21:12:26.875956073 +0100
Modify: 2018-07-24 11:11:48.128794519 +0200
Change: 2018-07-24 11:11:48.128794519 +0200
Birth: -
Per dereferenziare (seguire) il collegamento simbolico e visualizzare le informazioni sul file a cui punta il collegamento simbolico, utilizzare il -L
, (--dereference
) opzione:
stat -L /etc/resolv.conf
File: /etc/resolv.conf
Size: 715 Blocks: 8 IO Block: 4096 regular file
Device: 17h/23d Inode: 989 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 101/systemd-resolve) Gid: ( 103/systemd-resolve)
Access: 2019-11-06 20:35:25.603689619 +0100
Modify: 2019-11-06 20:35:25.555689733 +0100
Change: 2019-11-06 20:35:25.555689733 +0100
Birth: -
Personalizzazione dell'output #
La stat
comando 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 operanti --format
aggiunge automaticamente una nuova riga dopo l'output di ogni operando. Il --printf
interpreta gli escape della barra rovesciata.
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, eseguire:
stat --format="%F" /dev/null
character special file
È possibile combinare un numero qualsiasi di direttive di formattazione e, facoltativamente, utilizzare separatori personalizzati tra di esse. 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 il --printf
opzione:
stat --printf='Name: %n\nPermissions: %a\n' /etc
\n
stampa una nuova riga:
Name: /etc
Permissions: 755
La stat
può anche visualizzare le informazioni in forma concisa. Questo formato è utile per l'analisi da parte di altre utilità.
Richiama il comando con -t
(--terse
) opzione per stampare l'output in forma concisa:
stat -t /etc
/etc 12288 24 41ed 0 0 801 8126465 147 0 0 1573068933 1573068927 1573068927 0 4096
Per un elenco completo di tutte le direttive di formato per file e tipo di file system, man stat
o stat --help
nel tuo terminale.
Conclusione #
La stat
comando stampa informazioni su determinati file e file system.
In Linux, molti altri comandi possono visualizzare informazioni su determinati file, con ls
essendo il più utilizzato, ma mostra solo una parte delle informazioni fornite da stat
comando.
Se hai domande o feedback, sentiti libero di lasciare un commento.