Linux stat формат даты

Руководство по команде 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-страницу утилиты.

Источник

Читайте также:  Cleartype windows 10 что это

Linux stat формат даты

int stat(const char * file_name , struct stat * buf );
int fstat(int filedes , struct stat * buf );
int lstat(const char * file_name , struct stat * buf );

ОПИСАНИЕ

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

stat возвращает информацию о файле file_name и заполняет буфер buf . lstat идентична stat , но в случае символьных сылок она возвращает информацию о самой ссылке, а не о файле, на который она указывает. fstat идентична stat , только возвращается информация об открытом файле, на который указывает filedes (возвращаемый open (2)), а не о file_name .

Все эти функции возвращают структуру stat , которая содержит следующие поля:

Поле st_size задает размер файла (если он обычный или является символьной ссылкой) в байтах. Размер символьной ссылки — длина пути файла на который она сылается, без конечного NUL.

Поле st_blocks задает размер файла в 512-байтных блоках. (Оно может быть меньше, чем st_size /512 например, когда в файле есть пропуски.) st_blksize задает «предпочтительный» размер блока для эффективного ввода/вывода в файловой системе. (Запись в файл более мелкими порциями может привести к некорректному чтению/изменению/повторной записи информации).

Некоторые файловые системы Linux не реализуют все метки времени. Некоторые файловые системы позволяют обращаться к файлам так, что не происходит никаких изменений в поле st_atime . (См. ‘noatime’ в mount (8). Поле st_atime изменяется при доступе к файлу, например, при execve (2), mknod (2), pipe (2), utime (2) и read (2) (если прочитано больше нуля байтов). Другие функции, например, mmap (2), могут изменять, а могут и не изменять st_atime . Поле st_mtime изменяется при модификациях файла, например, при выполнении mknod (2), truncate (2), utime (2) и write (2) (если записано больше нуля байтов). Более того, поле st_mtime каталога изменяется при создании и удалении файлов в этом каталоге. Поле st_mtime не изменяется при изменении владельца, группы, количества жестких ссылок файла или режима доступа к нему. Поле st_ctime изменяется при записи или установке информации об inode (владельце, группе, количестве ссылок, режиме и т.д.).

Указанные далее макросы POSIX проверяют, является ли файл: S_ISLNK(m) символьной ссылкой (Нет в POSIX.1-1996.) S_ISREG(m) обычным файлом S_ISDIR(m) каталогом S_ISCHR(m) символьным устройством S_ISBLK(m) блочным устройством S_ISFIFO(m) каналом FIFO S_ISSOCK(m) сокетом

Описанные ниже флаги определены для поля st_mode :

S_IFMT 0170000 битовая маска для полей типа файла
S_IFSOCK 0140000 сокет
S_IFLNK 0120000 символьная ссылка
S_IFREG 0100000 обычный файл
S_IFBLK 0060000 блочное устройство
S_IFDIR 0040000 каталог
S_IFCHR 0020000 символьное устройство
S_IFIFO 0010000 канал FIFO
S_ISUID 0004000 бит setuid
S_ISGID 0002000 бит setgid (смотри ниже)
S_ISVTX 0001000 бит принадлежности (смотри ниже)
S_IRWXU 00700 маска для прав доступа пользователя
S_IRUSR 00400 пользователь имеет право чтения
S_IWUSR 00200 пользователь имеет право записи
S_IXUSR 00100 пользователь имеет право выполнения
S_IRWXG 00070 маска для прав доступа группы
S_IRGRP 00040 группа имеет права чтения
S_IWGRP 00020 группа имеет права записи
S_IXGRP 00010 группа имеет права выполнения
S_IRWXO 00007 маска прав доступа всех прочих (не находящихся в группе)
S_IROTH 00004 все прочие имеют права чтения
S_IWOTH 00002 все прочие имеют права записи
S_IXOTH 00001 все прочие имеют права выполнения
Бит setgid (S_ISGID) имеет несколько специальных применений: указывает, что для данного каталога используется семантика BSD; файлы, создаваемые в нем, наследуют группу-владельца от этого каталога, а не от фактической группы-владельца процесса, создавшего файл; а в подкаталогах данного каталога также будет установлен бит S_ISGID. Если файл не имеет бита выполнения группой (S_IXGRP), то бит setgid означает жесткую блокировку файла/записей. Бит принадлежности (S_ISVTX) каталога означает, что файлы в этом каталоге могут быть удалены или переименованы только владельцем файла, владельцем каталога и суперпользователем.

Читайте также:  Проводник windows 10 пропала боковая панель

ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ


НАЙДЕННЫЕ ОШИБКИ


СООТВЕТСТВИЕ СТАНДАРТАМ

POSIX не описывает биты S_IFMT, S_IFSOCK, S_IFLNK, S_IFREG, S_IFBLK, S_IFDIR, S_IFCHR, S_IFIFO, S_ISVTX, но вместо этого требует использовать макросы S_ISDIR() и т.п. Макросов S_ISLNK и S_ISSOCK нет в стандарте POSIX.1-1996, но оба они могут быть в следующем стандарте POSIX; бывший SVID 4v2, последний SVIDv2. Unix V7 (и более поздние системы) имеют S_IREAD, S_IWRITE, S_IEXEC, тогда как POSIX требует присутствия синонимов S_IRUSR, S_IWUSR, S_IXUSR.

Источник

Landoflinux

Stat command

Displaying Files and File System information

The following are examples of how to use the Linux «stat» command to display detailed information relating to files and file systems.

Linux stat command examples

The Linux stat command is a tool that can be used for displaying detailed information relating to a file or file system on a Linux system. By default the stat command should be available on most distributions of Linux. In the examples below, a CentOS Linux distribution was used.

Linux Stat Command Syntax

The basic syntax of the «statstrong>» command is as follows:

The simplest use of the «stat» command is to pass the name of a file to the command. In the example below you can see the default output from the stat command. Basic information such as size, file type, Inode information, Number of links, Access, Modification and Change date and time stamps are displayed. The stat command is often used to view Modification/access times on a file. (A more detailed way of displaying creation time and access time stamps on a file is to use the debugfs command)

stat -f — Displaying File System Status

If you wish to view information that relates to a file system and not an individual file, you may pass the «-f» parameter followed by a filesystem:

Format Sequences

To display specific information relating to a file or file system, you may use what is known as a format sequence. By passing the parameter «-c» or «—format» for files and «-f» or «—file-system» for file systems. You can specify individual points of interest such as inode number, mount point etc.. A list of all the parameters that can be passed for files and file systems is listed at the bottom of the page.

stat —format=%i FileName

As an example we are specifying that we would like to display the inode information of the specified file.

From the above we can see that the inode number for the file «anaconda-ks.cfg» is «135«.

stat —format=%i%g%G FileName

In this example we are specifying multiple format sequences that we would like to display.

In the above example, multiple parameters were passed to the «—format» option. An explanation of these is listed below:

inode number: %i
group ID of owner: %g
group name of owner: %G
file name: anaconda-ks.cfg

The output from the file indicates that the inode number is «135«, the group ID of the owner is «0» and the group name of the owner is «root«.

stat -f -c %a /opt

The above example of the stat command is used against a file system. In this example, we use the «-f» option indicating that we are passing a file system. The «-c» flag is used to specify the format sequence.

%a — free blocks available to non-superuser

For a full list of parameters that can be used against a file system, see the list below.

Format Sequences for files

The following format sequences are for use with files:

Читайте также:  Nvidia linux x86 �������

Format Sequences for File Systems

The following format sequences are for use with File Systems:

Источник

Команда Stat в Linux

Stat Command in Linux

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

stat утилита командной строки, которая отображает подробную информацию о данных файлах или файловых системах

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

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

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

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

При вызове без каких-либо параметров 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 ):

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

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

  • File — имя файла.
  • ID — ID файловой системы в шестнадцатеричном формате.
  • Namelen — максимальная длина имен файлов.
  • Fundamental block size — размер каждого блока в файловой системе.
  • Blocks:
    • Total — общее количество блоков в файловой системе.
    • Free — количество свободных блоков в файловой системе.
    • Available — количество бесплатных блоков, доступных для пользователей без полномочий root.
  • Inodes:
    • Total — общее количество inode в файловой системе.
    • Free — количество бесплатных инодов в файловой системе.

Разыменование (Follow) Симлинки

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

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

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

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

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

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

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

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

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

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

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

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

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

Вывод

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

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

Источник

Оцените статью