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

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

私は実際には、1つのファイルまたは複数のファイルを含むすべてのファイルを記述するために「コンテナファイル」という用語を使用します。いくつかの例は次のとおりです。タールアーカイブまたは目次

いくつかのアーカイブGUIソフトウェアでtarアーカイブファイルを開くか、いくつかのGUI OSファイルブラウザでディレクトリを開くとします。どちらの場合も、実際には1つのファイル、または2つ以上のファイルです。含むコンテナファイルに表示されます(最初は最も基本的な深さ - 「追加の深さ」を考慮しません)。

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

答え1

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

.
└── dir1
    └── file1

(これはtreeコマンドの出力です。)実行するとfind -maxdepth 0.代わりに実行すると、find -maxdepth 1現在存在するディレクトリの実際の内容が取得されます./dir1。しかし、./dir1/file1これはすでに明らかです。

要約すると、現在のディレクトリには深さがゼロではなく1のファイルが含まれています。

答え2

この質問は用語について尋ねるようです。気をつけなければならないのが正しいです。 「深さ」という言葉は難しいかもしれませんが、私はいつもそれを使用する前に自分の論理をチェックしています。

答えが1である理由(そして1である理由)を理解するには、0または1でインデックスを作成する決定がランダムではないことを理解する必要があります。実際には、全く異なる2つを説明します。説明するには、いくつかの色(赤、青、紫)を含むリストを考えてください。このリストを2つの方法で議論できます。

  1. リストから:1stは赤で、2ndは青で、サムrdは紫です。 1から明示的にインデックス付けを開始
  2. 紫色は2リストの先頭から青は1リストの先頭からは遠い赤がリストの先頭です。0。インデックスは0から始まります。

コンピュータサイエンスでは、オフセット(ゼロベースのインデックス付け)を使用することは、多くの数学的操作をより簡単にプログラムできるようにするために好まれます。しかし、私たちは「最初からインデックスを作成する」だけではなく、何か他のものを説明していることを理解することが重要です。

0ベースの索引付けは(実際には)常にオフセットがあります。、ファントムゼロがあっても。


用語として、findfindは現在のディレクトリへのオフセットとしてゼロからインデックスを開始します。つまり、-maxdepth 1現在のディレクトリからレベル1を探索するという意味です。繰り返しますが、find . -maxdepth 0これは.現在のディレクトリから始まり、何も拡張しないためです。

この議論の前に、深さ0を見つけることについて考えたことはないでしょう。 0は幽霊です(そして実際には役に立ちません)。


次に、コンテナ側で深さ0はzipファイルが拡張されないことを意味します。これはコンテナが全くないことを意味します。単一レイヤー(他のファイルは含まれているが他のzipは含まないzip)の深さは、コンテナの外部から始まり、ファイルを抽出するにはコンテナを拡張する必要があるため、常に深さ1です。

関連情報