私たちのほとんどは Windows システム上で通常のファイル名やフォルダー名を見ているだけですが、もう少し予期せぬもの、つまりファイル名やフォルダー名の前にドットが付いていることに遭遇した人もいるかもしれません。なぜこのようなことが起こるのでしょうか?今日の SuperUser Q&A 投稿には、非常に好奇心旺盛な読者の質問に対する答えが記載されています。
今日の質疑応答セッションは、コミュニティ主導の Q&A Web サイトのグループである Stack Exchange の下位部門である SuperUser のご好意で提供されました。
写真提供: ドミリエル (Flickr)
質問
スーパーユーザー読者の Niko Bellic さんは、Windows の一部のファイル名とフォルダー名の前にドットが付いている理由を知りたいと考えています。
![]()
たとえば、Windows システムの My Documents ディレクトリに次のフォルダが見つかりました。
- .ssh
- .subversion
これは私が気づいていない、ある種の命名規則なのでしょうか?
Windows のファイル名やフォルダー名の前にドットが付いているものがあるのはなぜですか?
答え
SuperUser の貢献者である grawity が私たちに答えを与えてくれました。
この命名規則は Unix 系オペレーティング システム (Linux や OSX など) に由来しており、隠しファイルまたはディレクトリを意味します。どこでも機能しますが、主な用途はホーム ディレクトリ (つまり ~/.cache/ または ~/.plan) に設定ファイルを隠すことです。これらはドット ファイルと呼ばれることが多いです。
ドット ファイルは、ある意味、Windows の AppData ディレクトリに相当する従来の Unix と呼ぶことができます。一方、多くの Linux プログラムは XDG ベース ディレクトリ仕様 に従うように変更されており、その構成は ~/.config/ に移動され、その他のデータは ~/.cache/ および ~/.local/share/ に移動されます。これにより、AppData\Roaming および AppData\Local により似たものになります。
Windows 上にこれらの .ssh ディレクトリと .subversion ディレクトリがあるのは、POSIX ではなく Windows システム API を使用するように移植されたプログラム (具体的には OpenSSH と Subversion) を使用しているためですが、他の Windows 規則に合わせて調整されていないためです。
Windows システムで Cygwin などの Unix に似た環境を使用するユーザーの作業を容易にするために、この調整が意図的にスキップされることがあります。たとえば、Cygwin は ls などの Unix 風のツールの標準セットをインストールします。これは Windows の隠しフラグを無視し、ドット ファイル名のみを尊重します。また、個人の Windows コンピュータと Linux/BSD/OSX コンピュータが同じ場所で共有されている場合、それらの間で構成を同期するのも簡単です。
これらのファイルは通常、ユーザーのホーム ディレクトリ (つまり、Linux の場合は /home/name/.ssh、Windows 7 以降の場合は C:\Users\name\.ssh) にあります。これらがDocumentsまたはMyDocumentsサブディレクトリに置かれることは非常にまれです(結局のところ、それらにはドキュメントが含まれていません)。
Rob Pike が Google+ で書いている ように、これは偶然の機能でした。
ずっと昔、Unix ファイル システムの設計が検討されていたとき、エントリ . および .. ナビゲーションを容易にするために表示されました。確信はありませんが、ファイル システムが階層化されたときに、バージョン 2 の書き換え中に .. が入ったと考えられます (初期の段階では非常に異なる構造になっていました)。しかし、「ls」と入力するとこれらのファイルが表示されたため、Ken か Dennis がプログラムに簡単なテストを追加しました。当時はアセンブラーでしたが、問題のコードは次のようなものと同等でした。
- if (name[0] == ‘.’) 続行;
このステートメントは本来のものより少し短くなりました。次のとおりです。
- if (strcmp(name, “.”) == 0 || strcmp(name, “..”) == 0) 続行;
しかしまあ、それは簡単で、結果は 2 つありました。
まず、悪い前例が作られてしまいました。他の多くの怠惰なプログラマは、同じ単純化を行うことでバグを導入しました。ピリオドで始まる実際のファイルは、カウントされるべきときにスキップされることがよくあります。
次に、さらに悪いことに、隠しファイルまたはドット ファイルというアイデアが生まれました。その結果、怠惰なプログラマーが全員のホーム ディレクトリにファイルをドロップするようになりました。これを入力するために使用しているコンピュータにはあまりソフトウェアがインストールされていませんが、ホーム ディレクトリには約 100 個のドット ファイルがあり、そのほとんどが何なのか、まだ必要なのかどうかさえわかりません。ホーム ディレクトリを経由するすべてのファイル名評価は、この蓄積されたスラッジによって速度が低下します。
説明に何か追加することはありますか?コメントでは音を消してください。他のテクノロジーに精通した Stack Exchange ユーザーからの回答をさらに読みたいですか? ここで完全なディスカッション スレッドを確認してください 。





