最初は偶然だと思っていましたが、今ではタグもあります。すべての隠しファイル名はドットで始まります。これは慣習ですか?なぜ選ばれたのですか?変更できますか?または、他の言葉で(関連する質問@evilsoupが他の多くの答えを暗示していると示唆したように):名前を変更せずにファイルを非表示にできます.
か?(名前の最初の文字として使用します)?
最初は偶然だと思っていましたが、今ではタグもあります。すべての隠しファイル名はドットで始まります。これは慣習ですか?なぜ選ばれたのですか?変更できますか?または、他の言葉で(関連する質問@evilsoupが他の多くの答えを暗示していると示唆したように):名前を変更せずにファイルを非表示にできます.
か?(名前の最初の文字として使用します)?
回答:
ファイル名の前に。非表示にする必要があるのは、Unixの初期のソフトウェアバグの結果です。特別なエントリ
.
と..
ディレクトリエントリがファイルシステムに追加されたとき、lsコマンドはそれらを表示すべきではないと判断されました。ただし、プログラムは、名前が.
正確な名前.
やでなく、文字で始まるファイルを除外するように誤って記述されています..
。
...そのため、バグとして始まり、機能として採用されました(記録の.
ために、現在のディレクトリへ..
のリンクであり、その上のディレクトリへのリンクですが、私はあなたがすでにそれを知っていると確信しています)。ファイルを非表示にするこの方法は、ほとんどの場合実際に十分であるため、Windowsスタイルのファイル非表示を実装することを誰も気にしていないと思います。
また、異なる動作を実装すると、* nixの世界でさらに多くの断片化が発生するという事実があります。
ファイルを非表示にする別の方法がありますが、名前を変更する必要はありませんが、GUIファイルマネージャーでのみ機能します(そしてそれらの間で普遍的ではありません-主要なLinuxのものはそれを使用しますが、OSXのFinderはそうしないと思いますニッチなLinuxファイルマネージャーは、この動作をサポートする可能性が低くなります.hidden
。ls
シェルグロブはこれを尊重しませんが、それでもあなたには便利かもしれません。
ドットで始まるファイルは、コマンド「ls」によってデフォルトで無視されます。コマンドは「隠し」ファイルとほぼ同じ効果がありますが、同じではありません(他のコマンドは同じことを選択する場合もあります)。「hidden」は属性の1つではないため、ドットで始まるファイルは「hidden」ではありません。DOS / Windowsとは異なり、「非表示」はUnixの属性ではありません。Unixには多くの属性があります(「man chattr」はそれらすべてを教えてくれます)が、hiddenはそれらの1つではありません。
ドットファイルが「ls」によって無視される理由は、実際には非常に面白くて恥ずかしいです。これは設計上の決定ではなく、Unixの初期のソフトウェアバグの結果でした。特別なとき。および..ディレクトリエントリがファイルシステムに追加されたため、邪魔になっているため、lsコマンドはそれらを表示しないことが決定されました。ただし、プログラムは名前が。で始まるファイルを除外するように急いで作成されました。正確な名前「。」ではなく、文字 または「..」。そして、それはその後Unixで守られてきた先例を作りました。面白いことに、Unixの人たちがPlan 9の作成に進んだとき、彼らは意図的にドットファイルを入れませんでした。
man chattr
、他の隠しファイルを可能にするためには、おそらくパッケージまたは特定のプログラムが必要だと思いました。
ファイルを非表示にできるかどうか、およびどのような条件に依存するかは、使用しているファイルシステムとそのドライバーに依存します。従来のUnixファイルシステムには、ファイルの「非表示」属性がありません。
ファイルシステムドライバーは、ディレクトリリストを取得するために使用されるシステムコールに結果を提供するときに名前を省略するだけで、必要なファイルを隠すことができます。セルグートが彼の答えで説明したように、ドットで始まるファイルは本当に隠されていません。
(これは、ルートキットがファイルを隠す方法でもあります。ディレクトリリスティングを生成するシステムコールにフックし、非表示にするファイルを除外します。)
たとえば、Oracle ACFSクラスタのファイルシステムでは、ディレクトリ<filesystem mountpoint>/.ACFS/
は完全に非表示になりますls -a
。まったく表示されず、でも表示されません。ただし、そこにあることがわかっている場合は、問題なくアクセスできます。
ACFSファイルシステムのスナップショット機能を使用している場合、その.ACFS
ディレクトリからそのファイルシステムの既存のファイルシステムスナップショットにアクセスできます。隠されていなかった場合、バックアッププログラムはファイルシステムの現在のコンテンツと既存のスナップショットのコンテンツの両方をバックアップしてしまう可能性があり、これはおそらく望ましくないでしょう。通常、現在の状態または特定のスナップショットの状態のいずれかをバックアップします。