web-dev-qa-db-ja.com

ドットで始まるファイル名が隠されているのはなぜですか?最初の文字にドットを使用せずにファイルを非表示にすることはできますか?

最初は偶然だと思っていましたが、今では a tag もあることがわかります。すべての隠しファイル名はドットで始まります。これは慣習ですか?なぜそれが選ばれたのですか?変更できますか?または言い換えると(関連する質問として、@ evilsoupが他の人たちへの答えを示唆していることを示唆しています):名前を変更せずにファイルを非表示にできますか(.を名前の最初の文字として使用します)?

15
JMCF125

Wikipediaによると

ファイル名の前にが付いているという概念。非表示にする必要があるのは、UNIXの初期のソフトウェアバグの結果です。特別な.および..ディレクトリエントリがファイルシステムに追加されたとき、lsコマンドはそれらを表示しないように決定されました。ただし、プログラムは、正確な名前.または.ではなく、名前が..文字で始まるファイルを除外するように誤って作成されました。

...それはバグとして始まり、その後機能として採用されました(レコードの場合、.は現在のディレクトリへのリンクであり、..はその上のディレクトリへのリンクです、しかし私はあなたがすでにそれを知っていると確信しています)。この方法でファイルを非表示にする方法は、実際にはほとんどの場合十分なものであるため、Windowsスタイルのファイルの非表示を実装することに煩わされたことはないでしょう。

また、さまざまな動作を実装すると、* nixの世界でさらに多くの断片化が発生するという事実もあります。これは、誰もが望む最後のことです。

ファイル名を変更しないファイルを非表示にする別の方法がありますが、それはGUIファイルマネージャーでのみ機能します(そしてそれらの間で普遍的ではありません-主要なLinuxはそれを使用していますが、OSXのFinderはそうではないと思います。ニッチなLinuxファイルマネージャーがこの動作をサポートする可能性は低くなります):.hiddenというファイルを作成し、ファイル名を1行に1つずつ、内部を非表示にします。 lsとShellグロブはこれを尊重しませんが、それでもまだ役立つかもしれません。

26
evilsoup

ドットで始まるファイルは、コマンド「ls」によってデフォルトで無視されます。これは、「hidden」ファイルとほぼ同じ効果がありますが、同じではありません(他のコマンドは同じかしないかを選択します)。 「hidden」は属性の1つではないため、ドットで始まるファイルは「hidden」ではありません。 DOS/Windowsとは異なり、「hidden」はUnixの属性ではありません。Unixには多くの属性があります(「man chattr」はすべてを教えてくれますそれら)しかし隠されたものはそれらの1つではありません。

ドットファイルが "ls"によって無視される理由は、実際にはかなりおかしい/恥ずかしいです。これは設計上の決定ではなく、 UNIXの初期のソフトウェアバグの結果です 。特別なとき。および..ディレクトリエントリがファイルシステムに追加されました。邪魔になっているため、lsコマンドはそれらを表示しないように決定されました。ただし、プログラムは、名前がで始まるファイルを除外するように急いで作成されました。正確な名前「。」ではなく、文字または「..」。そしてそれは、Unixでそれ以来続いてきた先例を作り出しました。おかしなことに、Unixの人たちがPlan 9の作成に取り掛かったとき 彼らはドットファイルを意図的に配置していませんでした

14
sergut

ファイルを非表示にできるかどうか、およびどのような条件かは、使用しているファイルシステムとそのドライバーによって異なります。従来のUnixファイルシステムには、ファイルの「非表示」属性がありません。

ファイルシステムドライバーは、ディレクトリリストを取得するために使用されるシステムコールに結果を提供するときに、ファイル名を省略するだけで、必要なファイルを非表示にできます。 sergutが彼の回答で述べたように、ドットで始まるファイルは本当に隠されているわけではありません。

(これは、ルートキットがファイルを非表示にする方法でもあります。ディレクトリリストを生成するシステムコールにフックし、非表示にするファイルを除外します。)

たとえば、Oracle ACFSクラスタファイルシステムでは、ディレクトリ<filesystem mountpoint>/.ACFS/は完全に非表示になっています。つまり、ls -aを使用しても、まったく表示されません。しかし、そこにあることがわかっていれば、問題なくアクセスできます。

ACFSファイルシステムのスナップショット機能を使用している場合は、その.ACFSディレクトリを介して、そのファイルシステムの既存のファイルシステムスナップショットにアクセスできます。非表示にしていない場合、バックアッププログラムはファイルシステムの現在の内容と既存のスナップショットの内容の両方をバックアップする可能性があり、おそらく望ましくありません。通常は、現在の状態または特定の1つのスナップショットの状態のいずれかをバックアップします。

0
telcoM