Команда Stat в Linux

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 .

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Оставьте комментарий

Ваш адрес email не будет опубликован.