Какова базовая «глубина» любого «файла-контейнера»?

Какова базовая «глубина» любого «файла-контейнера»?

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

Допустим, я открываю архив tar с помощью какой-либо программы для архивации с графическим интерфейсом пользователя или, допустим, я открываю каталог с помощью какого-либо браузера файлов ОС с графическим интерфейсом пользователя, и в обоих случаях, действительно, один файл или два или более файлов, которыесодержалсяв файле-контейнере предстают передо мной (в первой, самой базовой глубине - не считая "более глубоких глубин").

В общем, какова глубина этих файлов в системах Unix и Linux? Глубина 0 или глубина 1?

решение1

Чтобы ответить на ваш вопрос, я бы привел использование глубины в findкоманде. Вы можете использовать флаг, --maxdepthчтобы определить максимальную глубину, на которой вы хотите искать определенные файлы. Теперь, если вы находитесь в каталоге (или файле-контейнере, если использовать ваши слова, хотя это обычно ассоциируется с docker) со следующей структурой

.
└── dir1
    └── file1

(это вывод команды tree) и запустите, find -maxdepth 0вы получите только .. При запуске find -maxdepth 1вместо этого вы получите фактическое содержимое каталога, в котором вы находитесь, то есть ./dir1. Чтобы продолжить это, поиск с maxdepth 2, конечно, также выводит, ./dir1/file1но это и так должно быть очевидно.

Подводя итог, можно сказать, что файлы, содержащиеся в каталоге, в котором вы в данный момент находитесь, находятся на глубине 1, а не 0.

решение2

Этот вопрос, кажется, касается терминологии. Вы правы, будьте осторожны, термин «глубина» может быть сложным, и я всегда ловлю себя на том, что проверяю свою собственную логику, прежде чем использовать его.

Чтобы понять, почему ответ 1 (а это 1), вы должны понять, что решение индексировать с 0 или индексировать с 1 не является произвольным. На самом деле это описание двух совершенно разных вещей. Чтобы объяснить, представьте себе список, содержащий некоторые цвета [красный, синий, фиолетовый]. Мы можем говорить об этом списке двумя способами:

  1. В списке:1st красный,2nd - синий,3rd фиолетовый. Ясно индексация от 1
  2. Фиолетовый - это2от начала списка, синий - это1от начала списка, красный - начало списка -0. Индексация с 0.

В информатике использование смещения (индексации от 0) является предпочтительным, поскольку это упрощает программирование многих математических операций. Но важно понимать, что мы не просто «индексируем от нуля», мы описываем что-то другое.

Индексация с нуля (фактически)всегда смещение, даже если есть фантомный ноль.


С точки зрения findтерминологии, find индексирует от 0 как смещение от текущего каталога. Это -maxdepth 1означает начать с текущего каталога и закончить explore 1 слой. Аналогично find . -maxdepth 0это просто .потому, что вы начинаете с текущего каталога и ничего не расширяете.

До этого обсуждения вы, скорее всего, даже не задумывались о поиске глубины 0. 0 — это фантом (не особо полезный).


Исходя из этого, в терминологии контейнеров глубина 0 должна была бы означать развертывание нулевых zip-файлов. Это означало бы, что контейнера вообще нет. Глубина в один слой (zip, содержащий другие файлы, но без других zip-файлов) всегда будет иметь глубину 1, поскольку вы начинаете за пределами контейнера и должны развернуть один контейнер, чтобы извлечь файлы.

Связанный контент