回答:
この命名規則は、Unixに似たオペレーティングシステム(LinuxやOS Xなど)に由来し、「隠された」ファイルまたはディレクトリを意味します。どこでも動作しますが、その主な用途は、ホームディレクトリ内の構成ファイルを非表示にすることです(たとえば~/.cache/
、~/.plan
「ドットファイル」と呼ばれることが多い)。
ドットファイルは、ある意味では、Windowsの「AppData」ディレクトリに相当する従来のUnixと呼ばれます。(多くのLinuxプログラムは、XDGベースディレクトリ仕様に従うように変更されており、設定を~/.config/
他のデータに~/.cache/
&に移動しています。~/.local/share/
これにより、AppData\Roaming
andに少し似ていAppData\Local
ます。)
Windowsにこれら.ssh
と.subversion
ディレクトリがあるのは、POSIXの代わりにWindowsシステムAPIを使用するように移植されたいくつかのプログラム(具体的にはOpenSSHとSubversion)を使用したためです。
WindowsシステムでCygwinなどのUnixライクな環境を使用する人々の生活を楽にするために、この適応が意図的にスキップされる場合があります。たとえば、Cygwin ls
は、Windowsの「非表示」フラグを無視し、.dotfile
名前のみを尊重するなどのUnixライクなツールの標準セットをインストールします。また、同じ場所(例:)を使用すると、<home>/.ssh
WindowsとLinux / BSD / OSXコンピューター間で構成を簡単に同期できます。
また:通常、これらのファイルはユーザーのホームディレクトリ(Linux、Windows 7 以降など)にあります。それらが「ドキュメント」または「マイドキュメント」サブディレクトリに配置されることは非常にまれです。/home/name/.ssh
C:\Users\name\.ssh
Rob Pike がGoogle+で書いているように、これは偶然の機能でした。
昔、Unixファイルシステムの設計が進められていたときに、ナビゲーションを簡単にするためのエントリ
.
とエントリ..
が登場しました。確信はありませんが..
、ファイルシステムが階層化されたバージョン2の書き換え中に入ったと思います(初期の段階では非常に異なる構造でした)。ただし、lsと入力すると、これらのファイルが表示されたため、KenまたはDennisがプログラムに簡単なテストを追加しました。それはアセンブラーにありましたが、問題のコードは次のようなものと同等でした:
if (name[0] == '.') continue;
このステートメントは、本来あるべきものよりも少し短いものでした。
if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue;
しかし、ちょっと、それは簡単でした。
二つのことが起こりました。
まず、悪い先例が設定されました。他の多くの怠zyなプログラマーは、同じ単純化を行うことでバグを導入しました。ピリオドで始まる実際のファイルは、カウントする必要があるときにしばしばスキップされます。
第二に、そしてさらに悪いことに、「隠された」または「ドット」ファイルのアイデアが作成されました。その結果、より怠laなプログラマーが全員のホームディレクトリにファイルをドロップし始めました。これを入力するために使用しているマシンにはそれほど多くのものはインストールされていませんが、ホームディレクトリには約100個のドットファイルがあり、それらのほとんどが何であるか、またはそれらがまだ必要かどうかもわかりません。ホームディレクトリを通過するすべてのファイル名の評価は、この蓄積されたスラッジによって遅くなります。
ls
は、-a
すべてのファイルをリストするオプションがあります。
LOGIN.COM
またはDECW$MAIL.DAT
ホームディレクトリのようなものになってしまいます。(当時、他のどのシステムが人気があったのかはわかりません。)Unixは最近作成されたばかりです。規約はまったくありませんでした。
..
、「up dir」などのUnix規則の一部が追加されました。Microsoftは、実際にこれらの「高度なUnix機能」を宣伝しました。