Každý soubor a složka v souborovém systému má tzv. strukturu Inode, ve které jsou uložena metadata tohoto objektu. V ní je uložen vlastník, skupina vlastníků, čas změny, vytvoření a přístup k souboru a další informace. Lze je zobrazit nejen pomocí nástrojů pro ladění souborového systému. Určité informace zobrazuje nástroj ls
, ale pokud potřebujete více, můžete použít příkaz stat
. Příště si povíme, jak tento příkaz v Linuxu používat.
Syntaxe příkazu je jednoduchá. Je třeba mu předat volby a cestu k souboru, u kterého chcete zobrazit informace:
$ stat [options] /path/to/file
Není nutné předávat volby a není jich vůbec mnoho:
-L, dereference
- zobrazí informace o souboru místo symbolického odkazu;
-f, --file-system
- zobrazí informace o souborovém systému, ve kterém je soubor umístěn;
-c, --format
- umožňuje zadat výstupní formát místo standardního, každý soubor se vypíše z nového řádku;
--printf
- podobně jako --format
, pouze pro nový řádek je třeba použít ;
-t, --terse
- zobrazí informace ve velmi stručné podobě, na jednom řádku;
--version
- zobrazí verzi nástroje.
Podívejme se na několik příkladů použití. Pro zobrazení informací o souboru stačí spustit program bez voleb tak, že mu předáte cestu k souboru, například /etc/passwd
:
$ stat /etc/passwd
Výstup programu:
Soubor
- cesta k souboru, pro který se informace zobrazují;
Velikost
- velikost souboru v bajtech;
IO
Block - velikost bloku souborového systému v bajtech;
Blocks
- počet bloků souborového systému obsazených souborem;
Device (Zařízení)
- identifikátor zařízení, například HDD, na kterém je soubor uložen;
Inode - jedinečné číslo Inode tohoto souboru;
Links
- počet pevných odkazů na tento soubor;
Access - přístupová
práva k souboru;
Uid
- identifikátor a jméno uživatele-vlastníka souboru;
Gid
- identifikátor a název skupiny souborů;
Access
- čas posledního přístupu k souboru;
Modify
- čas poslední změny obsahu souboru;
Changed
- čas poslední změny atributů nebo obsahu souboru;
Created(Birth)
- vyhrazeno pro zobrazení původního data vytvoření souboru, ale zatím není implementováno.
O formátu času si musíme říci něco více. Například čas posledního přístupu k souboru je 2020-12-02 18:25:01.043831739 +0200. Tento čas se zobrazuje s ohledem na časové pásmo. A čísla +0200 ukazují, že časové pásmo na počítači, který tento soubor vytvořil nebo upravil, je o dvě hodiny delší než UTC, tedy Evropa/Kyjev v zimním čase.
Pokud se pokusíte utilitě předat symbolický odkaz, zobrazí se pouze informace z Inodu samotného odkazu:
$ stat /etc/passwdlin
Chcete-li zobrazit informace o souboru, na který odkaz ukazuje, použijte parametr -L
:
$ stat -L /etc/passwdlink
Můžete předat více než jeden soubor:
$ stat /etc/passwd /etc/group
Pro formátování výstupu můžete použít následující sekvence znaků:
Přístupová práva:%A
- přístupová práva;
%b
- počet obsazených bloků;
%F
- typ souboru;
%g
- identifikátor skupiny souborů;
%G
- název skupiny souborů;
%i
- identifikátor inodu;
%n
- název souboru;
%s
- velikost souboru;
%u
- identifikátor vlastníka souboru;
%U
- jméno vlastníka souboru;
%x
- čas posledního přístupu;
%y
- čas poslední změny obsahu;
%z
- čas poslední změny obsahu nebo atributů.
Toto nejsou všechny možné sekvence, další najdete v nápovědě nástroje:
$ man stat
Například zobrazme pouze název souboru a čas poslední změny jeho obsahu:
$ stat --printf "File %n has been modified %y " /etc/passwd /etc/group
Pokud chcete zobrazit informace o souborovém systému, ve kterém se soubor nachází, použijte parametr -f
:
$ stat -f /etc/passwd
Podívejme se, co znamenají pole, která nástroj zobrazuje:
Soubor
- název souboru;
Typ
- typ souborového systému;
ID
- identifikátor souborového systému;
Délka názvu(Namelen
) - maximální délka názvu v souborovém systému;
Velikostbloku
- množství dat v požadavku na čtení nebo zápis pro optimální rychlost;
Základní
velikostbloku
- fyzická velikost bloku v souborovém systému.
Dále je uveden celkový počet bloků v systému a počet volných bloků.