Thank you for reading this post, don't forget to subscribe!
stat утилита командной строки, которая отображает подробную информацию о данных файлах или файловых системах
Эта статья объясняет, как использовать команду stat.
Использование команды stat
Синтаксис команды stat следующий:
1 |
stat [OPTION]... FILE... |
stat принимает одно или несколько входных имен FILE и включает в себя ряд параметров, которые управляют поведением команды и выводом.
Давайте посмотрим на следующий пример:
1 2 |
stat file.txt |
Вывод будет выглядеть примерно так:
1 2 3 4 5 6 7 8 |
File: file.txt Size: 4030 Blocks: 8 IO Block: 4096 regular file Device: 801h/2049d Inode: 13633379 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/ linuxize) Gid: ( 1000/ linuxize) Access: 2019-11-09 09:52:17.991979701 +0100 Modify: 2019-11-09 09:52:17.971979713 +0100 Change: 2019-11-09 09:52:17.971979713 +0100 Birth: - |
При вызове без каких-либо параметров stat, отображается следующая информация о файле:
- File – имя файла.
- Size – Размер файла в байтах.
- Blocks – количество выделенных блоков, которые занимает файл.
- IO Block – вывода – размер в байтах каждого блока.
- File type – (например, обычный файл, каталог, символическая ссылка …)
- Device – номер устройства в шестнадцатеричном и десятичном виде.
- Inode – номер Inode.
- Links – Количество жестких ссылок.
- Access – Права доступа к файлам в числовых и символьных методах.
- Uid – идентификатор пользователя и имя владельца .
- Gid – идентификатор группы и имя владельца.
- Context – контекст безопасности SELinux.
- Access – последний раз, когда к файлу обращались.
- Modify – последний раз, когда содержимое файла было изменено.
- Change – последний раз, когда атрибут файла или содержимое были изменены.
- Birth – Время создания файла (не поддерживается в Linux).
Отображение информации о файловой системе
Чтобы получить информацию о файловой системе, в которой находится данный файл, вместо информации о самом файле, используйте параметр -f, ( –file-system):
1 2 |
stat -f file.txt |
Вывод команды будет выглядеть так:
1 2 3 4 5 |
File: "package.json" ID: 8eb53097b4494d20 Namelen: 255 Type: ext2/ext3 Block size: 4096 Fundamental block size: 4096 Blocks: Total: 61271111 Free: 25395668 Available: 22265851 Inodes: Total: 15630336 Free: 13979610 |
Когда stat вызывается с параметром -f, он показывает следующую информацию:
- Файл – имя файла.
- ID – ID файловой системы в шестнадцатеричном формате.
- Namelen – максимальная длина имен файлов.
- Fundamental block size – размер каждого блока в файловой системе.
- Blocks:
- Total – общее количество блоков в файловой системе.
- Free – количество свободных блоков в файловой системе.
- Available – количество бесплатных блоков, доступных для пользователей без полномочий root.
- Inodes:
- Total – общее количество inode в файловой системе.
- Free – количество бесплатных инодов в файловой системе.
Разыменование (Follow) Симлинки
По умолчанию stat не следует символическим ссылкам. Если вы запустите команду по символической ссылке, вывод будет содержать информацию о символической ссылке, а не о файле, на который она указывает:
1 2 |
stat /etc/resolv.conf |
1 2 3 4 5 6 7 8 |
File: /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf Size: 39 Blocks: 0 IO Block: 4096 symbolic link Device: 801h/2049d Inode: 8126659 Links: 1 Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2019-11-06 21:12:26.875956073 +0100 Modify: 2018-07-24 11:11:48.128794519 +0200 Change: 2018-07-24 11:11:48.128794519 +0200 Birth: - |
Для разыменования (следования) символической ссылки и отображения информации о файле, на который указывает символическая ссылка, используйте параметр -L, ( –dereference):
1 2 |
stat -L /etc/resolv.conf |
1 2 3 4 5 6 7 8 |
File: /etc/resolv.conf Size: 715 Blocks: 8 IO Block: 4096 regular file Device: 17h/23d Inode: 989 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 101/systemd-resolve) Gid: ( 103/systemd-resolve) Access: 2019-11-06 20:35:25.603689619 +0100 Modify: 2019-11-06 20:35:25.555689733 +0100 Change: 2019-11-06 20:35:25.555689733 +0100 Birth: - |
Настройка вывода
Команда stat имеет две опции, которые позволяют вам настроить вывод в соответствии с вашими потребностями:, -c ( –format=”format”) и –printf=”format”.
Разница между этими двумя опциями заключается в том, что когда два или более файлов используются в качестве оперантов, с помощью –format автоматически добавляется новая строка после вывода каждого операнда. В –printf трактует обратный слеш.
Существует множество директив формата для файлов и файловых систем, которые можно использовать с –format и –printf.
Например, чтобы просмотреть только тип файла, который вы будете использовать:
1 2 |
stat --format="%F" /dev/null |
1 |
character special file |
Вы можете комбинировать любое количество директив форматирования и, при необходимости, использовать пользовательские разделители между ними. Разделитель может быть одним символом или строкой:
1 2 |
stat --format="%n,%F" /dev/null |
1 |
/dev/null,character special file |
Чтобы интерпретировать специальные символы, такие как перевод строки или табуляция, используйте параметр –printf:
1 2 |
stat --printf='Name: %n\nPermissions: %a\n' /etc |
\n печатает новую строку:
1 2 |
Name: /etc Permissions: 755 |
stat также может отображать информацию в сжатой форме. Этот формат полезен для анализа другими утилитами.
Вызовите команду с опцией -t( –terse), чтобы напечатать вывод в краткой форме:
1 2 |
stat -t /etc |
1 |
/etc 12288 24 41ed 0 0 801 8126465 147 0 0 1573068933 1573068927 1573068927 0 4096 |
Для получения полного списка всех директив формата для файлов и файловых систем введите man statили stat –help в вашем терминале.