Команда stat в linux
В одной из прошлых статей мы говорили о том, что у каждого файла и папки в файловой системе есть так называемая структура 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» с именем файла, о котором вы хотите узнать больше.
Таким образом, вы можете увидеть такие детали, как имя файла, размер, тип файла, разрешения доступа, UID и GID, а также время доступа/модификации.
Вопрос 2. Как вывести информацию в краткой форме?
Краткая форма вывода упрощает для других программ синтаксический анализ вывода. Чтобы получить выходную информацию «stat» в этой форме, используйте опцию командной строки -t.
Вопрос 3. Как сделать вывод информации stat в пользовательском формате?
Для этого используйте опцию --format. Эта опция требует, чтобы вы ввели правильную последовательность символов форматирования, а их имеется очень много. Например, чтобы получить доступ к разрешениям/правам в форме, читаемой человеком, используйте %A.
создаст следующий вывод:
Аналогично, вы можете использовать %n для имени файла, %s для размера и %U для имени пользователя владельца файла.
Вопрос 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. В загрузочном меню нажмите "е" - реда.
Читайте также: