В прошлом я узнал, что в файловых системах Linux / UNIX каталоги - это просто файлы, которые содержат имена файлов и номера инодов файлов внутри каталога.
Есть ли простой способ увидеть содержимое каталога? Я имею в виду способ, которым имена файлов и inode хранятся / организованы.
Я не ищу ls
, find
или что-то похожее. Я также не хочу видеть содержимое файлов в каталоге. Я хочу увидеть реализацию каталогов. Если каждый каталог представляет собой просто текстовый файл с некоторым содержимым, возможно, существует простой способ просмотра содержимого этого текстового файла.
В bash в Linux это невозможно сделать cat folder
. Выход просто Is a directory
.
Обновление Вопрос Как проверить информацию о структуре каталогов файла Unix / Linux? решает ту же проблему, но не имеет такого полезного решения, как решение mjturner .
источник
vi <folder>
соответствует вашим потребностям? Простоvim <DIR>
Это то, что вы хотите?stat
команду.stat folder
,cat
это сработало бы. Но такой подход устарел десятилетия назад. Я не знаю ни одного прямого способа увидеть фактическое хранилище файловой системы. Вместо этого есть новые системные вызовы для возврата информации в стандартизированном формате, который остается неизменным независимо от того, какая базовая файловая система используется.Ответы:
Инструмент для отображения деталей inode для файловой системы будет зависеть от конкретной файловой системы. Для
ext2
,ext3
,ext4
файловые системы (наиболее распространенные файловые системы Linux), вы можете использоватьdebugfs
, для XFSxfs_db
, для ZFSzdb
. Дляbtrfs
некоторой информации доступно использованиеbtrfs
команды.Например, чтобы изучить каталог в
ext4
файловой системе (в данном случае/
этоdev/sda1
):Выше мы начинаем с поиска inode объекта directory
src
(664488
), а затем выгружаем его содержимое в файлsrc.out
и затем отображаем его, используяod
. Как вы можете видеть, содержимое всех файлов в этом каталоге (Animation.js
и т. Д.) Отображается в дампе.Это только начало - см
debugfs
страницы вручную или типаhelp
внутриdebugfs
для получения дополнительной информации.Если вы используете
ext4
, вы можете найти больше информации о структуре и расположении записей каталога в документации ядра .источник
od -x
чтобы создать дамп файла записи каталога.Вы можете использовать свой язык программирования по своему выбору, открыть каталог, как если бы это был файл, и прочитать байты из полученного дескриптора файла. Это не очень много скажет вам, так как это будет просто мусор (с несколькими узнаваемыми строками), если вы не знаете, как он организован. Как это организовано - в значительной степени проблема реализации для рассматриваемой файловой системы. Если вы хотите углубиться в эти вещи, я предлагаю вам начать с чтения
man dirent.h
. Этого должно быть достаточно, чтобы направить вас дальше к тому, что поражает ваше воображение.источник
Вы можете попробовать (раздел является примером).
используйте dump для записи данных inode в файл.
человек твой друг, это должно дать тебе несколько идей.
источник