.
および
..
ディレクトリ間の移動を簡素化します。 ファイルシステムが階層化されたときにバージョン2で追加されたよう
..
(最初のバージョンでは、まったく異なる方法で配置されていました)。 しかし、これらの「疑似ファイル」は
ls
の出力を
ls
、KenまたはDennisが
ls
コードに簡単なチェックを追加しました。
if(name [0] == '。')continue;実際、プログラムはアセンブラーで作成されましたが、チェックの本質はまさにそれでした。
このチェックをより広範囲に実装する方がより適切です。
if(strcmp(name、 "。")== 0 || strcmp(name、 "..")== 0)continue;-しかし、違いは何ですか、主なことはすべてがうまくいったことです。
これには2つの大きな影響がありました。
第一に、Unixのこのような「ずさんな最適化」の先例が作成され、他の多くの怠programmerなプログラマーが同様の方法でプログラムにバグを押し込みました。
第二に、これはさらに悪いことですが、ピリオドで始まる「隠しファイル」は「機能」として認識されていました。 多くの怠zyなプログラマが、各ユーザーのホームディレクトリにそのようなファイルを作成し始めました。 マシンには多くのプログラムがインストールされていませんが、ホームディレクトリには約100の隠しファイルがあり、それらのほとんどについて、それらがなぜ必要なのか、まったく必要なのかさえわかりません。 ホームディレクトリ内のファイルを検索するたびに、この目に見えないゴミのために何回も速度が低下します。
ls
「最適化」の予期しない結果として、 誤って「隠しファイル」がUnixに現れたと確信しています。
40年前にUnixの作者がコードの半分の行を節約したという事実によって、いくつのバグ、どれだけの無駄なプロセッササイクル、どれほどの人間の迷惑が説明できますか?
独自のコードで「角を切り」たいときはいつでも、このケースを覚えておいてください。
(システムにドットのあるファイルが必要であると多くの人が主張しています。はい、ファイル自体は必要ですが、名前のドットは不要です。
$HOME/cfg
または
$HOME/lib
に保存する方がはるかに便利です。プラン9では、「隠しファイルはありません。ミスから学ぶことができます。」