Il comando stat è uno strumento molto utile in Bash, utilizzato per visualizzare informazioni dettagliate su file e directory. Fornisce dati come dimensione, permessi, timestamp, e molto altro, che spesso non sono immediatamente accessibili con comandi di base come ls. In questo articolo esploreremo come utilizzare stat, con esempi pratici per aiutarti a sfruttare al meglio le sue funzionalità.
La sintassi di base del comando stat
è:
stat [opzioni] [file/directory]
Dove:
[opzioni]
rappresenta eventuali parametri che si possono passare per personalizzare l'output.[file/directory]
è il file o la directory di cui vuoi ottenere informazioni.
Output predefinito:
File: test.txt
Size: 1234 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 395978 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ user) Gid: ( 1000/ user)
Access: 2024-10-05 09:35:12.000000000 +0200
Modify: 2024-10-05 09:32:45.000000000 +0200
Change: 2024-10-05 09:32:45.000000000 +0200
Birth: -
Spiegazione dell'output:
- File: nome del file.
- Size: dimensione del file in byte.
- Blocks: numero di blocchi allocati sul disco per questo file.
- IO Block: dimensione del blocco di input/output del filesystem.
- Device: ID del dispositivo su cui risiede il file.
- Inode: numero dell'inode del file.
- Links: numero di hard link associati al file.
- Access: permessi del file in formato ottale e simbolico, insieme a UID e GID del proprietario.
- Access/Modify/Change: timestamp di accesso, modifica, e cambiamento delle proprietà del file.
- Birth: la data di creazione del file, se supportata dal filesystem.
Uno degli aspetti più potenti del comando stat
è la possibilità di personalizzare l'output usando il parametro --format
o -c
. Questo permette di specificare esattamente quali informazioni vogliamo visualizzare e come.
Ecco un esempio in cui visualizziamo solo la dimensione e i permessi del file:
stat --format="Dimensione: %s bytes, Permessi: %A" test.txt
L'output sarà simile a:
Dimensione: 1234 bytes, Permessi: -rw-r--r--
Qui, %s
viene utilizzato per ottenere la dimensione del file e %A
per i permessi in formato leggibile.
Ecco un elenco di specificatori di formattazione comunemente utilizzati con il comando stat
:
%s
: Dimensione del file in byte.%A
: Permessi del file in formato leggibile.%a
: Permessi del file in formato ottale.%U
: Nome dell'utente proprietario del file.%G
: Nome del gruppo proprietario.%F
: Tipo di file (es. "directory", "regular file").%Y
: Timestamp di ultima modifica, in formato Unix.%x
: Data e ora dell'ultimo accesso.%y
: Data e ora dell'ultima modifica.%z
: Data e ora dell'ultimo cambiamento delle proprietà.
Ad esempio, per visualizzare la dimensione, i permessi e l'ultimo tempo di modifica di un file:
stat --format="Dimensione: %s, Permessi: %A, Modificato: %y" test.txt
Se vuoi ottenere solo i permessi di un file, puoi utilizzare il comando stat
con la formattazione personalizzata:
stat -c "%A" test.txt
Oppure, per ottenere i permessi in formato ottale:
stat -c "%a" test.txt
Il comando ls -l
può sembrare simile a stat
, ma ci sono differenze significative. Mentre ls
fornisce una panoramica più generale e più adatta alla visualizzazione rapida di file, stat
fornisce informazioni molto più dettagliate su singoli file o directory. Inoltre, ls
non mostra alcune informazioni come i numeri di inode o il numero di blocchi allocati.
Conclusione
Il comando stat
è uno strumento estremamente potente per chiunque lavori con file e directory in un ambiente Bash. Che tu voglia sapere i permessi, i timestamp o i dettagli sul filesystem, stat
ti fornisce tutte le informazioni necessarie in modo efficiente e personalizzabile.