Команда stat в linux

Обновлено: 05.07.2024

В одной из прошлых статей мы говорили о том, что у каждого файла и папки в файловой системе есть так называемая структура Inode в которой хранятся метаданные этого объекта. Там хранится владелец, группа владельца, время изменения, создания и доступа к файлу, а также другая информация. Её можно увидеть не только с помощью инструментов отладки файловой системы.

Часть из этой информации показывает утилита ls, но если вам нужно больше, то можно воспользоваться командой stat. В этой статье мы рассмотрим как пользоваться этой командой в Linux.

Команда stat в Linux

Синтаксис команды очень простой. Ей надо передать опции и путь к файлу, для которого надо посмотреть информацию:

$ stat опции /путь/к/файлу

Опции передавать не обязательно и их совсем не много:

  • -L, dereference - показывать информацию о файле вместо символической ссылки;
  • -f, --file-system - показывать информацию о файловой системе в которой расположен файл;
  • -c, --format - позволяет указать формат вывода вместо стандартного, каждый файл выводится с новой строки;
  • --printf - аналогично --format, только для новой строки надо использовать \n;
  • -t, --terse - показ информации в очень кратком виде, в одну строку;
  • --version - показать версию утилиты.

Это все опции команды. Теперь давайте разберемся с примерами использования. Чтобы посмотреть информацию о файле достаточно запустить программу без опций передав ей путь к файлу, например /etc/passwd:


Рассмотрим что означает вывод программы:

  • Файл (File) - путь к файлу по которому показывается информация;
  • Размер (Size) - размер файла в байтах;
  • Блок В/В (IO Block) - размер блока файловой системы в байтах;
  • Блоков (Blocks) - количество блоков файловой системы, занятых файлом;
  • Устройство (Device) - идентификатор устройства, например HDD, на котором сохранён файл;
  • Inode - уникальный номер Inode этого файла;
  • Ссылки (Links) - количество жестких ссылок на этот файл;
  • Доступ (Access) - права доступа к файлу;
  • Uid - идентификатор и имя пользователя-владельца файла;
  • Gid - идентификатор и имя группы файла;
  • Доступ (Access) - время последнего доступа к файлу;
  • Модифицирован (Modify) - время когда в последний раз изменялся контент файла;
  • Изменен (Change) - время, когда в последний раз изменялись атрибуты файла или контент файла;
  • Создан (Birth) - зарезервировано для отображения первоначальной даты создания файла, но пока ещё не реализовано.

Надо ещё немного поговорить про формат времени. Например, время последнего доступа к файлу - 2020-12-02 18:25:01.043831739 +0200. Это время показывается с учётом временной зоны. А цифры +0200 показывают, что временная зона на компьютере, который создал или модифицировал этот файл на два часа больше чем UTC, то есть Europe/Kiev в зимнее время.

Если попробовать передать утилите символическую ссылку, то она покажет информацию только из Inode самой ссылки:


Для того чтобы увидеть информацию о файле, на который указывает ссылка надо использовать опцию -L:

stat -L /etc/passwdlink


Утилите можно передать не один файл, а несколько:

stat /etc/passwd /etc/group


И тут уже понадобиться возможность настройки формата вывода. Для форматирования вывода можно использовать такие последовательности символов:

  • %A - права доступа;
  • %b - количество занятых блоков;
  • %F - тип файла;
  • %g - идентификатор группы файла;
  • %G - имя группы файла;
  • %i - идентификатор Inode;
  • %n - имя файла;
  • %s - размер файла;
  • %u - идентификатор владельца файла;
  • %U - имя владельца файла;
  • %x - время последнего доступа;
  • %y - время последней модификации контента;
  • %z - время последнего изменения контента или атрибутов.

Это далеко не все возможные последовательности, больше вы моете найти в справке по утилите:

Например, давайте выведем только имя, файла, и время последней модификации его содержимоего:

stat --printf "File %n has been modified %y\n" /etc/passwd /etc/group


Если вы хотите посмотреть информацию о файловой системе, в которой расположен файл, то надо использовать опцию -f:

stat -f /etc/passwd


Давайте рассмотрим что означают поля, которые выводит утилита:

  • Файл (File) - имя файла;
  • Тип (Type) - тип файловой системы;
  • ID - идентификатор файловой системы;
  • Длина имени (Namelen) - максимальная длина имени в файловой системе;
  • Размер блока (Block size) - объем данных при запросе на чтение или запись для оптимальной скорости работы;
  • Базисный размер блока (Fundamental block size) - физический размер блока в файловой системе.

Дальше идут общее количество блоков в системе и количество свободных блоков.

Выводы

Из этой небольшой статьи вы узнали что из себя представляет команда stat Linux. Как видите, это очень полезная команда, позволяющая смотреть низкоуровневую информацию о файлах и файловой системе.

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

В этой статье объясняется, как использовать команду stat .

Использование команды stat

Синтаксис команды stat следующий:

stat принимает одно или несколько имен входных FILE и включает ряд параметров, которые управляют поведением команды и выводом.

Давайте посмотрим на следующий пример:

Результат будет выглядеть примерно так:

При вызове без каких-либо параметров stat отображает следующую информацию о файле:

Отображение информации о файловой системе

Чтобы получить информацию о файловой системе, в которой находится данный файл, вместо информации о самом файле, используйте параметр -f , ( --file-system ):

Результат команды будет выглядеть так:

Когда stat вызывается с параметром -f , он показывает следующую информацию:

Разыменование (следовать) символическим ссылкам

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

Чтобы разыменовать (следовать) символической ссылке и отобразить информацию о файле, на который указывает символическая ссылка, используйте параметр -L , ( --dereference ):

Настройка вывода

У команды stat есть две опции, которые позволяют вам настроить вывод в соответствии с вашими потребностями: -c , ( --format="format" ) и --printf="format" .

Разница между этими двумя параметрами заключается в том, что, когда два или более файла используются в качестве оперантов, --format автоматически добавляет новую строку после каждого вывода операнда. --printf интерпретирует экранирование обратной косой черты.

Существует множество директив форматирования для файлов и файловых систем, которые можно использовать с --format и --printf .

Например, чтобы просмотреть только тип файла, вы должны запустить:

Вы можете комбинировать любое количество директив форматирования и, при желании, использовать между ними настраиваемые разделители. Разделитель может быть одиночным символом или строкой:

Чтобы интерпретировать специальные символы, такие как --printf или табуляция, используйте параметр --printf :

n печатает новую строку:

stat также может отображать информацию в краткой форме. Этот формат полезен для анализа другими утилитами.

Вызовите команду с параметром -t ( --terse ), чтобы распечатать вывод в краткой форме:

Для получения полного списка всех директив форматирования для файлов и типов файловых систем используйте man stat или stat --help в вашем терминале.

Выводы

Команда stat выводит информацию о данных файлах и файловых системах.

В Linux несколько других команд могут отображать информацию о данных файлах, причем ls является наиболее часто используемым, но он показывает только часть информации, предоставленной командой stat .

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

Оригинал: Linux stat Command Tutorial for Beginners (5 Examples)
Автор: Himanshu Arora
Дата публикации: 16 февраля 2018 года
Перевод: А. Кривошей
Дата перевода: сентябрь 2018 г.

Иногда, работая в командной строке в Linux, вам нужно больше узнать о файле. Например, вам может понадобиться такая информация, как размер файла, номер inode, права доступа, время последнего доступа или модификации и т. д. Вам может быть интересно, что существует утилита командной строки, которая выводит всю эту информацию сразу.

В этом уроке мы обсудим основы команды stat, используя несколько простых для понимания примеров. Все примеры, приведенные здесь, были протестированы на Ubuntu 16.04LTS.

Команда stat

Команда stat в Linux позволяет просматривать состояние файла (или даже файловой системы). Вот синтаксис команды:

Ниже приведены некоторые примеры в стиле вопрос/ответ, которые помогут вам понять, как работает stat.

Вопрос 1. Как использовать команду stat?

Все, что вам нужно сделать, - запустить команду «stat» с именем файла, о котором вы хотите узнать больше.

команда «stat»

Таким образом, вы можете увидеть такие детали, как имя файла, размер, тип файла, разрешения доступа, UID и GID, а также время доступа/модификации.

Вопрос 2. Как вывести информацию в краткой форме?

Краткая форма вывода упрощает для других программ синтаксический анализ вывода. Чтобы получить выходную информацию «stat» в этой форме, используйте опцию командной строки -t.

вывод информацию в краткой форме

Вопрос 3. Как сделать вывод информации stat в пользовательском формате?

Для этого используйте опцию --format. Эта опция требует, чтобы вы ввели правильную последовательность символов форматирования, а их имеется очень много. Например, чтобы получить доступ к разрешениям/правам в форме, читаемой человеком, используйте %A.

создаст следующий вывод:

вывод информации stat в пользовательском формате

Аналогично, вы можете использовать %n для имени файла, %s для размера и %U для имени пользователя владельца файла.

вывод информации stat в пользовательском формате

Вопрос 4. Чем опция --format отличается от --printf?

В принципе оба варианта делают то же самое. Разница заключается в том, как производится вывод. В то время как --format выводит новую строку после каждого использования, в случае --printf новая строка не добавляется. Вот как man-страница объясняет оба варианта:

используется заданный формат FORMAT вместо формата по умолчанию. После каждого использования FORMAT выводится новая строка. работает как --format, но интерпретирует обратные слеши и не выводит обязательную новую строку. Если вам нужна новая строка, включите \n в FORMAT.

Вопрос 5. Как заставить stat работать с файлом, если он является ссылкой?

Для этого есть специальная опция: -L. Поэтому, если входной файл является ссылкой, и вы хотите, чтобы stat вывела информацию о нем, запустите команду следующим образом:

Заключение

Было бы неправильно говорить, что у stat нет кривой обучения, но объем усилий, требуемых для этого, невелик, так как количество параметров командной строки ограничено. Мы обсудили здесь большинство из них. Для получения дополнительной информации прочитайте man-страницу утилиты.

Иногда, работая в командной строке в Linux, вам нужно больше узнать о файле. Например, вам может понадобиться такая информация, как размер файла, номер inode, права доступа, время последнего доступа или модификации и т. д. Вам может быть интересно, что существует утилита командной строки, которая выводит всю эту информацию сразу.

В этом уроке мы обсудим основы команды stat, используя несколько простых для понимания примеров. Все примеры, приведенные здесь, были протестированы на Ubuntu 16.04LTS.

Команда stat в Linux позволяет просматривать состояние файла (или даже файловой системы). Вот синтаксис команды:

Ниже приведены некоторые примеры в стиле вопрос/ответ, которые помогут вам понять, как работает stat.


Таким образом, вы можете увидеть такие детали, как имя файла, размер, тип файла, разрешения доступа, UID и GID, а также время доступа/модификации.

Вопрос 2. Как вывести информацию в краткой форме?


Вопрос 3. Как сделать вывод информации stat в пользовательском формате?

Для этого используйте опцию --format. Эта опция требует, чтобы вы ввели правильную последовательность символов форматирования, а их имеется очень много. Например, чтобы получить доступ к разрешениям/правам в форме, читаемой человеком, используйте %A.


Аналогично, вы можете использовать %n для имени файла, %s для размера и %U для имени пользователя владельца файла.


Вопрос 4. Чем опция --format отличается от --printf?

В принципе оба варианта делают то же самое. Разница заключается в том, как производится вывод. В то время как --format выводит новую строку после каждого использования, в случае --printf новая строка не добавляется. Вот как man-страница объясняет оба варианта:

используется заданный формат FORMAT вместо формата по умолчанию. После каждого использования FORMAT выводится новая строка.

работает как --format, но интерпретирует обратные слеши и не выводит обязательную новую строку. Если вам нужна новая строка, включите \n в FORMAT.

Вопрос 5. Как заставить stat работать с файлом, если он является ссылкой?

Для этого есть специальная опция: -L. Поэтому, если входной файл является ссылкой, и вы хотите, чтобы stat вывела информацию о нем, запустите команду следующим образом:

Было бы неправильно говорить, что у stat нет кривой обучения, но объем усилий, требуемых для этого, невелик, так как количество параметров командной строки ограничено. Мы обсудили здесь большинство из них. Для получения дополнительной информации прочитайте man-страницу утилиты.

Комментариев нет:

Подпишитесь на RSS

Перевод. Оригинал здесь. Если вы новичек в Linux и ранее использовали iTunes для управления своим iPod/iPhone/iPad, то скорее всего буд.

uTorrent - это легкий и эффективный торрент-клиент для Linux, Windows OS и Mac OS. Установка uTorrent в Linux отличается тем, что здесь uT.

Вы можете запускать скрипты на python в Linux непосредственно из терминала. Знать, как это делается, полезно как программистам, так и пол.

Как вы наверное знаете, Safari является браузером по умолчанию в Mac OS X и iPhone OS. Вышло уже несколько релизов и для Windows, но версии .

Способ сброса пароля root в CentOS 7 кардинально отличается от такового в Centos 6. 1. В загрузочном меню нажмите "е" - реда.

Читайте также: