Každý súbor a priečinok v súborovom systéme má takzvanú štruktúru Inode, v ktorej sú uložené metadáta tohto objektu. Ukladá sa v nej vlastník, skupina vlastníkov, čas modifikácie, vytvorenie a prístup k súboru, ako aj ďalšie informácie. Možno ju vidieť nielen pomocou nástrojov na ladenie súborového systému. Určité informácie zobrazuje nástroj ls
, ale ak potrebujete viac, môžete použiť príkaz stat
. Ďalej si povieme, ako tento príkaz používať v systéme Linux.
Syntax príkazu je jednoduchá. Je potrebné mu odovzdať možnosti a cestu k súboru, pre ktorý chcete zobraziť informácie:
$ stat [options] /path/to/file
Možnosti nie je potrebné odovzdávať a nie je ich vôbec veľa:
-L, dereferencia
- zobrazí informácie o súbore namiesto symbolického odkazu;
-f, --file-system
- zobrazí informácie o súborovom systéme, v ktorom sa súbor nachádza;
-c, --format
- umožňuje určiť výstupný formát namiesto štandardného, každý súbor sa vypíše z nového riadku;
--printf
- podobne ako --format
, len pre nový riadok treba použiť ;
-t, --terse
- zobrazí informácie vo veľmi stručnej forme, v jednom riadku;
--version
- zobrazí verziu nástroja.
Pozrime sa na niekoľko príkladov použitia. Na zobrazenie informácií o súbore stačí spustiť program bez volieb tak, že mu odovzdáte cestu k súboru, napríklad /etc/passwd
:
$ stat /etc/passwd
Výstup programu:
Súbor
- cesta k súboru, pre ktorý sa zobrazujú informácie;
Veľkosť
- veľkosť súboru v bajtoch;
IO
Block - veľkosť bloku súborového systému v bajtoch;
Blocks
- počet blokov súborového systému obsadených súborom;
Device (Zariadenie)
- identifikátor zariadenia, napríklad HDD, na ktorom je súbor uložený;
Inode - jedinečné číslo Inode tohto súboru;
Links (Odkazy)
- počet pevných odkazov na tento súbor;
Prístup - prístupové
práva k súboru;
Uid
- identifikátor a meno používateľa - vlastníka súboru;
Gid
- identifikátor a názov skupiny súborov;
Access
- čas posledného prístupu k súboru;
Modify
- čas poslednej úpravy obsahu súboru;
Changed
- čas poslednej zmeny atribútov alebo obsahu súboru;
Created(Birth)
(Vytvorené(Narodenie)
) - vyhradené na zobrazenie pôvodného dátumu vytvorenia súboru, ale zatiaľ nie je implementované.
O formáte času si musíme povedať trochu viac. Napríklad čas posledného prístupu k súboru je 2020-12-02 18:25:01.043831739 +0200. Tento čas sa zobrazuje s ohľadom na časové pásmo. A čísla +0200 ukazujú, že časové pásmo na počítači, ktorý vytvoril alebo upravil tento súbor, je o dve hodiny dlhšie ako UTC, t. j. Európa/Kyjev v zimnom čase.
Ak sa pokúsite utilite odovzdať symbolický odkaz, zobrazí iba informácie z Inode samotného odkazu:
$ stat /etc/passwdlin
Ak chcete zobraziť informácie o súbore, na ktorý odkazuje odkaz, použite možnosť -L
:
$ stat -L /etc/passwdlink
Môžete odovzdať viac ako jeden súbor:
$ stat /etc/passwd /etc/group
Na formátovanie výstupu môžete použiť nasledujúce postupnosti znakov:
%A
- prístupové práva;
%b
- počet obsadených blokov;
%F
- typ súboru;
%g
- identifikátor skupiny súborov;
%G
- názov skupiny súborov;
%i
- identifikátor inódu;
%n
- názov súboru;
%s
- veľkosť súboru;
%u
- identifikátor vlastníka súboru;
%U
- meno vlastníka súboru;
%x
- čas posledného prístupu;
%y
- čas poslednej úpravy obsahu;
%z
- čas poslednej úpravy obsahu alebo atribútov.
Toto nie sú všetky možné sekvencie, ďalšie nájdete v nápovede k nástroju:
$ man stat
Napríklad zobrazme len názov súboru a čas poslednej úpravy jeho obsahu:
$ stat --printf "File %n has been modified %y " /etc/passwd /etc/group
Ak chcete zobraziť informácie o súborovom systéme, v ktorom sa súbor nachádza, použite možnosť -f
:
$ stat -f /etc/passwd
Pozrime sa, čo znamenajú polia, ktoré nástroj zobrazuje:
Súbor
- názov súboru;
Typ
- typ súborového systému;
ID
- identifikátor súborového systému;
Dĺžka názvu(Namelen
) - maximálna dĺžka názvu v súborovom systéme;
Veľkosťbloku
- množstvo údajov v požiadavke na čítanie alebo zápis pre optimálnu rýchlosť;
Základná
veľkosťbloku
- fyzická veľkosť bloku v súborovom systéme.
Ďalej je to celkový počet blokov v systéme a počet voľných blokov.