隠しファイルと隠しディレクトリ
From Wikipedia, the free encyclopedia
計算機科学において、隠しファイルまたは隠しディレクトリとは、表示させるようにリクエストされない限り、ディレクトリの内容の報告から除外されるファイルシステムオブジェクト(ファイルやディレクトリなど)である。ファイルを隠すことの意義は、ユーザーにとって関心のないと思われるファイルを表示しないようにすることにある。この機能はアクセスが制限されるわけではないため、セキュリティ機構ではない。ユーザーは通常隠されているファイルを表示するよう要求できる[1][2]。隠すという機能は、ファイルシステムオブジェクトを表示するプログラムの機能であり、ファイルシステム全体やオペレーティングシステム全体の機能ではない。
Android
Unixベースのlsシェルコマンドは、オプション-aまたは-Aが指定されない限り、ドット(ピリオド)で始まるファイル(一般にドットファイルと呼ばれる)を隠す[3]。ワイルドカードでマッチングを試みた場合でも、式が.で始まらない限り、コマンドはドットファイルとマッチしない。例えば、*f*は.fooとマッチしないが、.f*はマッチする。
ロブ・パイクによると、ドットファイルはUnix 2nd Edition|Unix第2版の書きかえ時に階層型ファイルシステムを実装した際、偶然にできたものだった。この実装では、ディレクトリ自身を参照する名前として.を、親ディレクトリを参照する名前として..を導入した。これら2つのエントリをlsから出力しないようにするために、.で始まるすべてのエントリが省略された。その結果、ファイル名に.を最初の文字として与えることで、任意のファイルやディレクトリをlsの出力から除外するようになった[4]。
一般的に、ユーザー固有のアプリケーション設定情報は、ユーザーのホームディレクトリにドットファイルとして保存される。代表的なドットファイルには、.profile、.login、.cshrcなどのスタートアップ・シェルスクリプトや、fingerコマンドおよびnameコマンドで使用される.plan、.projectがある[5]。BashからGNOMEなどのデスクトップ環境に至るまで、多くのアプリケーションがユーザー固有の設定をこの方法で保存しているが、『XDG Base Directory Specification』は、そのような設定ファイルを非隠し(.で始まらない)だが隠しディレクトリ$HOME/.configに保存するよう移行することを目指している[6]。
Androidは、フォルダの内容を除外するようアプリへの手引きとして、空の.nomediaファイルを提供している。この慣例により、画像ファイルや音楽ファイルが画像ギャラリーに表示されたり、MP3プレイヤーアプリで再生されたりするのを防ぐ。これは、ダウンロードされたボイスメールがプレイリスト内の曲の間に再生されるのを防ぎ、他のフォルダ内の写真は自由に共有できる一方で、個人の写真を非公開にしておくのに役立つ。
この慣例はファイルシステムやオペレーティングシステムによって強制されるものではない。各アプリがこの慣例に従う責任を負う。
GNOME

GNOMEデスクトップ環境(およびGLib[7]を使用するプログラム)では、.hiddenという名前のファイルにリストされているファイル名は、そのファイルを含むディレクトリから除外される。ファイルマネージャーでは、キーボードショートカットCtrl+Hがドットファイルと.hiddenにリストされているファイルの両方を含む。
macOS
ドットファイルの挙動に加えて、不可視属性を持つファイルはlsによっては除外されないが、Finderによって除外される。
不可視属性はSetFileコマンドを介して設定または解除できる。例えば、コマンドラインSetFile -a V jimboはファイルjimboを隠す[8]。Mac OS X v10.6以降、chflagsコマンドも使用できる。例えば、chflags hidden jimboは同等である[9]。
WindowsとDOS
FAT、NTFS、およびReFSファイルシステムは、DOSおよびWindowsに由来しており、各項目に対して「隠し(hidden)」および「システム(system)」と呼ばれる2つのファイル属性を保持している。これらの属性を持つ項目は隠されることになる。
コマンドプロンプト
Windowsコマンドプロンプトでは、dirコマンドは「隠し」または「システム」属性を持つ項目を除外する。/aコマンドラインスイッチを付けて実行すると、隠されているものも含め、すべての項目を表示する。その派生である/asと/ahは、それぞれ「システム」属性を持つファイルと「隠し」属性を持つファイルを表示する。
MS-DOSおよびWindowsの全バージョンに含まれるattrib.exeコマンドラインユーティリティは、属性の設定や解除を行うことができる。
エクスプローラ
エクスプローラは、そのツールバー(またはコントロールパネル経由)からアクセスできるユーザー設定に基づいて表示を制御する。デフォルトでは、エクスプローラは「隠し」属性を持つ項目を除外するが、「隠しファイル、フォルダー、ドライブを表示」が設定されている場合はそれらを表示できる。「システム」属性を持つ項目は、「保護されたオペレーティングシステムファイルを表示しない(推奨)」という別の設定が解除されない限り、隠されたままである。エクスプローラは、隠し項目のアイコンを半透明で表示する。
Windows shellのハッキングにより、事前に定義されたCLSIDをフォルダー名に付加することで、フォルダー内のファイルを隠すことができる[10]。ハッキングされたフォルダー自身はエクスプローラで表示されるものの、フォルダーの中のファイルはWindowsの特殊フォルダーになる[11]。このハッキングはエクスプローラとWindows Shell APIに限定される。Shell APIを使用しない任意のアプリ(WindowsにバンドルされているコマンドプロンプトやPowerShellなど)は、ハッキングされたフォルダー、その名前、およびフォルダー内のファイルを表示できる。