Используйте stat -s
.Он печатает поля в том же порядке, но с метками (и без имени файла):
:; stat -s /etc/man.conf | fmt
st_dev=16777220 st_ino=641593 st_mode=0100644 st_nlink=1 st_uid=0
st_gid=0 st_rdev=0 st_size=4574 st_atime=1547885737 st_mtime=1500152545
st_ctime=1512806119 st_birthtime=1500152545 st_blksize=4194304
st_blocks=0 st_flags=32
Ваше первое загадочное поле - st_rdev
, «тип устройства, для специального файлового индекса».Поскольку мы не регистрируем файл устройства, это ноль.
Ваше второе загадочное поле - st_birthtimespec
, «время создания файла (рождение)» (см. Справочную страницу stat(2)
).Это расширение Дарвина 64-битное.
Ваш 4096 не размер файла в байтах.Это st_blksize
, «оптимальный размер блока для ввода / вывода».В моем примере это 4194304. Возможно, ваш файл находится в файловой системе HFS +.Мой находится в файловой системе APFS.
Ваше третье загадочное поле - st_flags
, «пользовательские флаги для файла».У тебя ноль, поэтому флаги не установлены.В моем примере (/etc/man.conf
) установлено UF_COMPRESSED
.
В чем разница между st_dev и st_rdev?
Поле st_dev
относится к устройству (жесткий диск / раздел / что угодно), содержащий файл.Поле st_rdev
для файлов устройств сообщает ядру, какое устройство представляет сам файл.Попробуйте запустить stat
на некоторых файлах устройства в /dev
, например /dev/null
и /dev/rdisk0
, чтобы увидеть ненулевые значения st_rdev
.
Многие, я не нашел правильную страницу руководства(ни человек стат, ни человек лстат).Есть ли официальная документация, которая подробно объясняет каждое поле статистики?Где я могу его найти?
Используйте man 1 stat
, чтобы узнать о флагах программы командной строки stat
, таких как флаг -s
, который я использовал.Затем используйте man 2 stat
и ваш любимый поисковик, чтобы узнать, что означают поля.