「コンテナ ファイル」の最も基本的な「深さ」とは何ですか?

「コンテナ ファイル」の最も基本的な「深さ」とは何ですか?

「コンテナファイル」という用語は、実質的に1つのファイルまたは2つ以上のファイルを含むファイルを指します。例としては、tar アーカイブまたはディレクトリ

例えば、アーカイブGUIソフトウェアでtarアーカイブを開いたり、GUI OSファイルブラウザでディレクトリを開いたりすると、どちらの場合も、1つのファイル、または2つ以上のファイルが含まれているコンテナ ファイル内の (最初の最も基本的な深さで - 「より深い深さ」は考慮されません) 目の前に表示されます。

一般に、Unix および Linux システムでは、これらのファイルの深さはどのくらいですか? 深さは 0 ですか、それとも深さ 1 ですか?

答え1

あなたの質問に答えるために、コマンドのdepthの使い方を引用しますfind。フラグを使用して、--maxdepth特定のファイルを検索する最大の深さを定義できます。今、次の構造のディレクトリ(またはコンテナファイル、通常はdockerに関連付けられています)にいるとします。

.
└── dir1
    └── file1

(これは tree コマンドの出力です) を実行しても、find -maxdepth 0のみが得られます.。 を実行するとfind -maxdepth 1、代わりに、現在いるディレクトリの実際の内容、つまり が取得されます./dir1。 これを続行するには、maxdepth 2 で検索すると、もちろん も出力されます./dir1/file1が、これはすでに明らかなはずです。

要約すると、現在いるディレクトリに含まれるファイルは、深さ 0 ではなく 1 にあります。

答え2

この質問は用語について尋ねているようです。注意するのは正しいです。「深さ」という用語は扱いにくい場合があり、私はいつもそれを使用する前に自分の論理をチェックしています。

答えが 1 である理由 (そして 1 である理由) を理解するには、0 からインデックスするか 1 からインデックスするかの決定が恣意的ではないことを理解する必要があります。これは実際には 2 つのまったく異なることを表しているのです。説明するために、いくつかの色 (赤、青、紫) を含むリストを考えてみましょう。このリストについては 2 つの方法で説明できます。

  1. リスト内:1stは赤です、2ndは青です、3rdは紫色です。明らかに1からインデックスされています
  2. 紫は2リストの先頭から離れたところでは、青は1リストの先頭から離れたところで、赤がリストの先頭です -00 からのインデックスです。

コンピュータ サイエンスでは、オフセット (0 からのインデックス) の使用が好まれます。これにより、多くの数学のプログラミングが簡単になるためです。ただし、単に「0 からのインデックス」ではなく、別のことを説明していることを理解することが重要です。

ゼロからのインデックスは(事実上)常にオフセットたとえ幻のゼロがあったとしても。


用語ではfind、find は現在のディレクトリからのオフセットとして 0 からインデックスを作成します。つまり、-maxdepth 1現在のディレクトリから開始し、1 つのレイヤーを探索することを意味します。同様に、現在のディレクトリから開始し、何も展開しないからfind . -maxdepth 0です。.

この議論まで、おそらく深さ 0 を見つけることなど考えたこともなかったでしょう。0 は幻です (実際には役に立ちません)。


そこから、コンテナの用語では、深さ 0 は 0 個の zip ファイルを展開することを意味します。つまり、コンテナがまったく存在しないことを意味します。1 層の深さ (他のファイルを含むが他の zip を含まない zip) は常に深さ 1 になります。これは、コンテナの外側から開始し、ファイルを抽出するために 1 つのコンテナを展開する必要があるためです。

関連情報