stat
— это утилита командной строки, которая отображает подробную информацию об определенных файлах или файловых системах.
В этой статье объясняется, как использовать команду stat
.
Использование команды stat
Синтаксис команды stat
следующий:
stat [OPTION]... FILE...
stat
принимает одно или несколько имен входных FILE
и включает ряд параметров, которые управляют поведением команды и выводом.
Давайте посмотрим на следующий пример:
stat file.txt
Результат будет выглядеть примерно так:
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-06 09:52:17.991979701 +0100
Modify: 2019-11-06 09:52:17.971979713 +0100
Change: 2019-11-06 09:52:17.971979713 +0100
Birth: -
При вызове без каких-либо параметров stat
отображает следующую информацию о файле:
- Файл — имя файла.
- Размер — размер файла в байтах.
- Блоки — количество выделенных блоков, занимаемых файлом.
- Блок ввода-вывода — размер каждого блока в байтах.
- Тип файла — (например, обычный файл, каталог, символическая ссылка.)
- Устройство — номер устройства в шестнадцатеричном и десятичном формате.
- Inode — номер Inode.
- Ссылки — количество жестких ссылок.
- Доступ — права доступа к файлам в числовых и символьных методах.
- Uid — ID пользователя и имя владельца .
- Gid — ID группы и имя владельца.
- Контекст — контекст безопасности SELinux.
- Доступ — время последнего доступа к файлу.
- Изменить — время последнего изменения содержимого файла.
- Изменить — время последнего изменения атрибута или содержимого файла.
- Рождение — время создания файла (не поддерживается в Linux).
Отображение информации о файловой системе
Чтобы получить информацию о файловой системе, в которой находится данный файл, вместо информации о самом файле, используйте параметр -f
, ( --file-system
):
stat -f file.txt
Результат команды будет выглядеть так:
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 — Максимальная длина имен файлов.
- Основной размер блока — размер каждого блока в файловой системе.
- Блоки:
- Всего — общее количество блоков в файловой системе.
- Свободно — количество свободных блоков в файловой системе.
- Доступно — количество бесплатных блоков, доступных пользователям без полномочий root.
- Inodes:
- Всего — общее количество индексных дескрипторов в файловой системе.
- Free — количество свободных индексных дескрипторов в файловой системе.
Разыменование (следовать) символическим ссылкам
По умолчанию stat
не следует за символическими ссылками . Если вы запустите команду для символической ссылки, вывод будет включать информацию о символической ссылке, а не о файле, на который она указывает:
stat /etc/resolv.conf
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
):
stat -L /etc/resolv.conf
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
.
Например, чтобы просмотреть только тип файла, вы должны запустить:
stat --format="%F" /dev/null
character special file
Вы можете комбинировать любое количество директив форматирования и, при желании, использовать между ними настраиваемые разделители. Разделитель может быть одиночным символом или строкой:
stat --format="%n,%F" /dev/null
/dev/null,character special file
Чтобы интерпретировать специальные символы, такие как --printf
или табуляция, используйте параметр --printf
:
stat --printf='Name: %nnPermissions: %an' /etc
n
печатает новую строку:
Name: /etc
Permissions: 755
stat
также может отображать информацию в краткой форме. Этот формат полезен для анализа другими утилитами.
Вызовите команду с параметром -t
( --terse
), чтобы распечатать вывод в краткой форме:
stat -t /etc
/etc 12288 24 41ed 0 0 801 8126465 147 0 0 1573068933 1573068927 1573068927 0 4096
Для получения полного списка всех директив форматирования для файлов и типов файловых систем используйте man stat
или stat --help
в вашем терминале.
Выводы
Команда stat
выводит информацию о данных файлах и файловых системах.
В Linux несколько других команд могут отображать информацию о данных файлах, причем ls
является наиболее часто используемым, но он показывает только часть информации, предоставленной командой stat
.
Добавить комментарий