Przejdź do głównej zawartości

stat


stat służy do odczytu metadanych plików oraz informacji o systemie plików. Pozwala sprawdzić m.in. prawa dostępu, właściciela i grupę, rozmiar (w bajtach/blokach), typ pliku, numery i-węzłów, a także czasy: ostatniego dostępu (atime), modyfikacji (mtime) i zmiany metadanych (ctime). Typowe konteksty to diagnostyka uprawnień, analiza wydajności I/O, skrypty CI/CD i backupy.

Dostępność: GNU/Linux (GNU coreutils), większość dystrybucji (Debian/Ubuntu, Fedora, Arch, openSUSE), a także wariant BSD/macOS (składnia i formatery różnią się – patrz Uwagi).


Okno terminala
stat [OPCJE] [ŚCIEŻKA...]
  • Warianty wywołania:

    • Interaktywnie: stat plik.txt
    • Skryptowo z formatowaniem: stat -c "FORMAT" plik
    • Informacje o systemie plików zawierającym ścieżkę: stat -f ścieżka/plik
  • Wspólne przełączniki (GNU): -c/--format, --printf, -f, -L, -t, --help, --version.


ParametrOpis
ŚCIEŻKAPlik, katalog, dowiązanie symboliczne lub inny obiekt do zbadania. Akceptuje wiele ścieżek.
-c, --format=FMTZwraca dane wg łańcucha formatu (np. %s – rozmiar, %a – prawa w ósemkowym). Zakończone znakiem nowej linii automatycznie.
--printf=FMTJak --format, ale nie dodaje automatycznego \n; obsługuje sekwencje \n, \t, itp.
-f, --file-systemZamiast metadanych pliku – informacje o systemie plików (rozmiar bloków, liczba i-węzłów, typ FS).
-L, --dereferencePodąża za dowiązaniem symbolicznym (stat docelowego pliku). Bez tego statuje samo dowiązanie.
-t, --terseZwięzły, jednowierszowy wynik (pola oddzielone spacją).
--helpKrótka pomoc.
--versionWersja programu.

Wybrane pola formatu (GNU -c/--printf):

SpecZnaczenie
%nNazwa pliku
%FLudzki typ obiektu (np. “regular file”, “directory”)
%sRozmiar w bajtach
%bLiczba przydzielonych bloków
%aUprawnienia w ósemkowym (bez typu)
%AUprawnienia symbolicznie (np. -rwxr-x---)
%u/%UUID / nazwa właściciela
%g/%GGID / nazwa grupy
%iNumer i-węzła
%hLiczba dowiązań
%W/%wCzas utworzenia (epoch / czytelny; może być -1/-)
%X/%xatime (epoch / czytelny)
%Y/%ymtime (epoch / czytelny)
%Z/%zctime (epoch / czytelny)

Okno terminala
# 1) Podstawowe informacje o pliku
stat README.md
# Efekt: pełny blok informacji (typ, rozmiar, prawa, właściciel, czasy) w formacie czytelnym.
Okno terminala
# 2) Zwięzły jednowierszowy wynik
stat -t README.md
# Efekt: pola w jednej linii, przydatne do szybkiego parsowania.
Okno terminala
# 3) Format przyjazny skryptom: rozmiar i nazwa
stat -c '%s %n' *
# Efekt: dla każdego pliku: "<rozmiar_bajtów> <nazwa>" – idealne do sortowania wg rozmiaru.
Okno terminala
# 4) Uprawnienia ósemkowo i symbolicznie
stat --printf '%a %A %n\n' /etc/passwd
# Efekt: np. "644 -rw-r--r-- /etc/passwd".
Okno terminala
# 5) Podążanie za symlinkiem (vs. badanie samego linku)
stat -L link_do_pliku # bada cel linku
stat link_do_pliku # bada samo dowiązanie
Okno terminala
# 6) Informacje o systemie plików, na którym leży ścieżka
stat -f /
# Efekt: typ FS, rozmiar bloku, wolne i całkowite i-węzły/bloki.
Okno terminala
# 7) Pobranie znacznika czasu mtime w sekundach od epoki
stat -c '%Y' plik.bin
# Efekt: liczba całkowita – łatwa do porównania w skryptach.

  • GNU vs. BSD/macOS: W systemach BSD/macOS stat ma inną składnię formatowania (np. stat -f "%z %N" plik dla rozmiaru i nazwy). Skrypty oparte na -c/--printfnieprzenośne.
  • Uprawnienia: Odczyt metadanych wymaga praw dostępu do katalogu/ścieżki; brak dostępu skutkuje komunikatem „Permission denied”.
  • Czasy plików: ctime to zmiana metadanych, nie „czas utworzenia”. Czas tworzenia bywa dostępny jako %w/%W, ale może być niewspierany (-).
  • Symlinki: Domyślnie badany jest sam link; użyj -L, aby statować cel.
  • Locale/format: Wynik „ludzki” może zależeć od locale. Do stabilnego parsowania używaj --format/--printf.

Błąd / KomunikatPrzyczynaRozwiązanie
stat: cannot stat 'plik': No such file or directoryNieistniejąca ścieżka lub literówka.Sprawdź nazwę/ścieżkę, użyj autouzupełniania TAB, ls/find do weryfikacji.
stat: cannot read symbolic link ...Uszkodzony symlink (brak celu).Zweryfikuj link ls -l; odtwórz cel lub usuń symlink.
Permission deniedBrak praw do katalogu/obiektu lub brak x na katalogu.Uruchom z odpowiednimi uprawnieniami, sprawdź prawa chmod, własność chown, ewentualnie sudo.
„Unknown option” w macOS/BSD dla -c/--printfRóżnice implementacyjne.Użyj odpowiedników BSD: stat -f z odpowiednimi znacznikami (np. %z – rozmiar, %Sp – prawa symboliczne).
Puste ctime/birth timeSystem plików nie przechowuje danego pola.Wybierz inne pole (mtime) lub FS wspierający czasy tworzenia (np. ext4, APFS).