ファイルを見るとき、ls -lの最初のフィールドがfではないのはなぜですか? [閉鎖]

ファイルを見るとき、ls -lの最初のフィールドがfではないのはなぜですか? [閉鎖]

"ls -l"を実行すると、次のような結果が得られます。

-rw-r--r-- 1 root root 209 Mar 30 17:41 fname

最初のフィールドはです-。これはファイルであることを意味します。

ファイル以外のディレクトリの場合、最初のフィールドはですd

Unixの開発者は、なぜdディレクトリには明確で直感的なものを使用し、-ファイルを表すためにaを使用することにしましたか?ファイルにはなぜできませんかf

編集する
非常に興味深い反応。さまざまなアイデアがあり、その理由のために実装および/または文書化されたものよりも一部が思わず本当であるように見えますが、すべての意味があります。

答え1

ls歴史的に、Unixの大きなデザイン決定の1つは、すべてをファイルとして扱うことでしたstat。たとえば、V3(1973年2月)ではstatマンページ(使用されているパターンを説明しますls

パターンは、次の文字の意味を持つ6文字の文字列です。

  1. s:ファイルが非常に小さい(4096バイト未満)
    l:ファイルが非常に大きいです。
  2. d:ファイルがディレクトリです
    x。 :ファイルが実行可能です
    u。 :実行時にユーザーIDが設定されます。
    -:上記は該当しません。

など。

V4(1973年10月)では、モードは今日のモードと似ています。lsマンページ説明する

このオプションで印刷されるパターンには-l10文字が含まれており、次のように説明されています。

最初の文字は、エントリがディレクトリである
d かどうかを示し、エントリが ブロック
b タイプの特殊ファイルの場合、エントリが 一般ファイルの場合を示します。
c
-

次の9文字は、それぞれ3桁の数字で構成される3つのグループとして解釈されます。

したがって、Unixのクリエイターは、通常のファイルが特別なものではなく、「ただ」デフォルト値だと思ったようです。したがって、文字を使用する資格はありません。すべてがファイルであり、通常のファイルではないファイルだけが追加の説明を必要とします。 。-これを「特殊性」が不足しているという信号として受け入れることができます。

厳密に言えば、デザイン決定はすべてをファイルとして処理するのではなく、ファイルシステムを介してすべてにアクセスできるようにすることでしたが、結果としてすべてを一種のファイルとして使用できる必要があるため、さまざまな種類のファイルを区別する能力が必要ですします。ファイル 。バラよりセクション3UNIX時間共有システム

関連情報