findコマンドの目的は、デフォルトのサイズ単位の512バイトです。

findコマンドの目的は、デフォルトのサイズ単位の512バイトです。

このfindコマンドを使用すると、サイズ別に検索でき、manページに指定されている単位を使用してサイズを指定できます。

File uses n units of space.  The following suffixes can be used:
  `b'    for 512-byte blocks (this is the default if no suffix is used)
  `c'    for bytes
  `w'    for two-byte words
  `k'    for Kilobytes (units of 1024 bytes)
  `M'    for Megabytes (units of 1048576 bytes)
  `G'    for Gigabytes (units of 1073741824 bytes)

bより一般的な仮定である「バイト」の代わりに「ブロック」を選択する歴史的な理由はありますか?バイトの代わりにブロックがデフォルトであるのはなぜですか?誰かがいつ、なぜこのデバイスを使用したいのですか?バイト/キロバイトに変換するには少し計算が必要で、基本単位では不便なようです。

ベストアンサー1

Unixの最初のバージョンは、ファイルシステムとディスクドライバで512バイトのブロックを使用しました。 Unixは、実装に密接に従うインターフェイスやブロックサイズなど、抽象的に残る必要がある詳細を漏らす非常に最小限の低レベルシステムで始めました。これは、ブロックサイズが異なる可能性があり、特定のファイルに適用されるブロックサイズも異なる可能性があるにもかかわらず、今日の「ブロック」はまだ多くの状況で512バイトを意味する理由です(ファイルシステム用、ボリューム管理ドライブ用、ボリューム管理ドライブ用、ボリュームマネージャの場合)ディスク...)。

実装では、ファイルに割り当てられたデータブロックの数を計算してディスク使用量を追跡するため、ファイルサイズをブロック数として簡単に報告できます。ディスク使用量とファイルサイズは通常、ディスク使用量が整数ブロックサイズに丸められるため、異なる場合があります。スパースファイル通常、必要以上にチャンクが小さい。私が知っている限り、スパースファイルを実装した初期のUnixシステムは、find -sizeファイルサイズの代わりにファイルが使用するブロック数を使用しました。POSIX仕様)。

最初のfind実装では、最後の数ブロックしか許可されていません-size。ある時点で、サフィックスは一部を表すためにfind -size受け入れられ始めました。cブロックの代わりに文字を使用することです。誰が始めたのかわかりませんが、ここに問題があります。4.3BSD。後で別のサフィックスが現れました。たとえば、FreeBSD では次のようになります。バージョン 6.2kMその他のサフィックスが導入されましたが、bGNUとBusyBox findにのみ存在するようです。

歴史的に多くのプログラムでは、「文字」と「バイト」を同じ意味で使用し、「文字」という用語を好む傾向がありました。たとえば、wc -cバイト数を計算します。マルチバイト文字のサポートとそれに伴うバイト数と区別される文字数は、比較的新しい現象です。

結論から言うと目的はありません。 512バイトはブロックサイズと基本単位であるという事実、そしてこの文字を使ったのはb意図的なものではなく、歴史的偶然の結果だ。

おすすめ記事