Вся інформація в одній команді: stat

stat — це утиліта командного рядка, що показує докладну інформацію про певні файли або файлові системи.

Команда stat включена в GNU Coreutils (пакет базових утиліт для UNIX-подібних ОС).

Вона показує безліч метаданих, включаючи: 

  • розмір файлу, 
  • розташування inode, 
  • права доступу і контекст SELinux, 
  • час створення і модифікації файлів, файлових систем тощо. 

Якщо коротко, stat — зручний і швидкий спосіб збору інформації, яку зазвичай можна отримати використовуючи кілька різних команд.

Як встановити stat в Linux? 

Імовірно, у вас вже встановлена stat команда, адже це базова утиліта. Якщо її все ж немає, пакетний менеджер Linux вам в поміч.

Крім цього, ви можете скомпілювати Coreutils з вихідного коду.

Як дізнатися статус файлу?

Під час виклику команди без будь-яких параметрів, stat показує наступну інформацію про файл:

  • ім’я файлу,
  • розмір файлу в байтах,
  • кількість виділених блоків, що займає файл,
  • розмір кожного блоку введення-виведення в байтах,
  • тип файлу,
  • номер Inode, 
  • кількість жорстких посилань,
  • права доступу до файлів,
  • Uid — ID користувача й ім’я власника,
  • Gid — ID групи та ім’я власника,
  • контекст безпеки SELinux,
  • час останнього доступу до файлу,
  • час останньої зміни вмісту файлу тощо.

Запуск stat забезпечує виведення інфи про конкретний файл або каталог:

$ stat planets.xml

  File: planets.xml

  Size: 325      Blocks: 8     IO Block: 4096   regular file

Device: fd03h/64771d    Inode: 140217      Links: 1

Access: (0664/-rw-rw-r–)  Uid: (1000/tux)   Gid: (100/users)

Context: unconfined_u:object_r:user_home_t:s0

Access: 2021-08-17 18:26:57.281330711 +1200

Modify: 2021-08-17 18:26:58.738332799 +1200

Change: 2021-08-17 18:26:58.738332799 +1200

 Birth: 2021-08-17 18:26:57.281330711 +1200

Як аналізувати виведення?

Тим, хто звик аналізувати виведення за допомогою інших утиліт, таких як awk, є опція –terse (-t). Вона форматує виведення без заголовків або розривів рядків.

$ stat –terse planets.xml

planets.xml 325 8 81b4 100977 100 fd03 140217 1 0 0 1629181617 1629181618 1629181618 1629181617 4096 unconfined_u:object_r:user_home_t:s0

Як задати власний формат?

Ви можете визначити власний формат виведення, використовуючи опцію –printf і синтаксис, аналогічний printf. Кожен атрибут, про який повідомляє stat, має послідовність форматів (%c для SELinux, %n для імені файлу тощо). Ви можете вибрати, що саме хочете бачити у звіті.

$ stat –printf=“%n\n%C\n planets.xml

planets.xml

unconfined_u:object_r:user_home_t:s0

$ $ stat –printf=“Name: %n\nModified: %y\n planets.xml

Name: planets.xml

Modified: 2021-08-17 18:26:58.738332799 +1200

Ось кілька поширених послідовностей форматів:

  • %a права доступу,
  • %F тип файлу,
  • %n ім’я файлу,
  • %U ім’я користувача,
  • %u ідентифікатор користувача,
  • %g ідентифікатор групи,
  • %w час народження,
  • %y час модифікації.

Повний список послідовностей форматів доступний на сторінці керівництва stat і на  Coreutils.

Підсумок

Якщо ви коли-небудь парсили висновок ls -l, то ви оціните гнучкість команди stat. Незалежно від того, чи використовуєте ви всю отриману інформацію, яка йде за замовчуванням, або створюєте власні запити, команда stat забезпечить легкий доступ до необхідних даних. 

Залишити відповідь

Дякуємо, що поділились