計算機科学において、隠しファイルまたは隠しディレクトリとは、表示させるようにリクエストされない限り、ディレクトリの内容の報告から除外されるファイルシステムオブジェクト(ファイルやディレクトリなど)である。ファイルを隠すことの意義は、ユーザーにとって関心のないと思われるファイルを表示しないようにすることにある。この機能はアクセスが制限されるわけではないため、セキュリティ機構ではない。ユーザーは通常隠されているファイルを表示するよう要求できる。隠すという機能は、ファイルシステムオブジェクトを表示するプログラムの機能であり、ファイルシステム全体やオペレーティングシステム全体の機能ではない。

UnixおよびUnix系の環境 Unixベースのlsシェルコマンドは、オプションまたはが指定されない限り、ドット(ピリオド)で始まるファイル(一般にドットファイルと呼ばれる)を隠す。ワイルドカードでマッチングを試みた場合でも、式が.で始まらない限り、コマンドはドットファイルとマッチしない。例えば、はとマッチしないが、はマッチする。

ロブ・パイクによると、ドットファイルはUnix 2nd Edition|Unix第2版の書きかえ時にを実装した際、偶然にできたものだった。この実装では、ディレクトリ自身を参照する名前として.を、親ディレクトリを参照する名前として..を導入した。これら2つのエントリをlsから出力しないようにするために、.で始まるすべてのエントリが省略された。その結果、ファイル名に.を最初の文字として与えることで、任意のファイルやディレクトリをlsの出力から除外するようになった。

一般的に、ユーザー固有のアプリケーション設定情報は、ユーザーのホームディレクトリにドットファイルとして保存される。代表的なドットファイルには、.profile、.login、.cshrcなどのスタートアップ・シェルスクリプトや、fingerコマンドおよびnameコマンドで使用される.plan、.projectがあるOne user could lookup another by using the command along with the username (and hostname if not on the local host), and the finger service would respond with the other user's current status, and the contents of the .plan and .project files in that user's $HOME folder.。BashからGNOMEなどのデスクトップ環境に至るまで、多くのアプリケーションがユーザー固有の設定をこの方法で保存しているが、『XDG Base Directory Specification』は、そのような設定ファイルを非隠し(で始まらない)だが隠しディレクトリ$HOME/.configに保存するよう移行することを目指している。

Android Androidは、フォルダの内容を除外するようアプリへの手引きとして、空のファイルを提供している。この慣例により、画像ファイルや音楽ファイルが画像ギャラリーに表示されたり、MP3プレイヤーアプリで再生されたりするのを防ぐ。これは、ダウンロードされたボイスメールがプレイリスト内の曲の間に再生されるのを防ぎ、他のフォルダ内の写真は自由に共有できる一方で、個人の写真を非公開にしておくのに役立つ。

この慣例はファイルシステムやオペレーティングシステムによって強制されるものではない。各アプリがこの慣例に従う責任を負う。

GNOME サムネイル|314x314ピクセル|隠しディレクトリを表示するGNOMEファイル GNOMEデスクトップ環境(およびGLibを使用するプログラム)では、という名前のファイルにリストされているファイル名は、そのファイルを含むディレクトリから除外される。ファイルマネージャーでは、キーボードショートカットがドットファイルとにリストされているファイルの両方を含む。

macOS ドットファイルの挙動に加えて、不可視属性を持つファイルはlsによっては除外されないが、Finderによって除外される。

不可視属性はSetFileコマンドを介して設定または解除できる。例えば、コマンドラインSetFile -a V jimboはファイルを隠す。Mac OS X v10.6以降、コマンドも使用できる。例えば、chflags hidden jimboは同等である。

WindowsとDOS FAT、NTFS、およびReFSファイルシステムは、DOSおよびWindowsに由来しており、各項目に対して「隠し(hidden)」および「システム(system)」と呼ばれる2つのファイル属性を保持している。これらの属性を持つ項目は隠されることになる。

コマンドプロンプト Windowsコマンドプロンプトでは、dirコマンドは「隠し」または「システム」属性を持つ項目を除外する。/aコマンドラインスイッチを付けて実行すると、隠されているものも含め、すべての項目を表示する。その派生である/asと/ahは、それぞれ「システム」属性を持つファイルと「隠し」属性を持つファイルを表示する。

MS-DOSおよびWindowsの全バージョンに含まれる.exeコマンドラインユーティリティは、属性の設定や解除を行うことができる。

エクスプローラ エクスプローラは、そのツールバー(またはコントロールパネル経由)からアクセスできるユーザー設定に基づいて表示を制御する。デフォルトでは、エクスプローラは「隠し」属性を持つ項目を除外するが、「隠しファイル、フォルダー、ドライブを表示」が設定されている場合はそれらを表示できる。「システム」属性を持つ項目は、「保護されたオペレーティングシステムファイルを表示しない(推奨)」という別の設定が解除されない限り、隠されたままである。エクスプローラは、隠し項目のアイコンを半透明で表示する。

のハッキングにより、事前に定義されたCLSIDをフォルダー名に付加することで、フォルダー内のファイルを隠すことができる。ハッキングされたフォルダー自身はエクスプローラで表示されるものの、フォルダーの中のファイルはWindowsのになる。このハッキングはエクスプローラとWindows Shell APIに限定される。Shell APIを使用しない任意のアプリ(WindowsにバンドルされているコマンドプロンプトやPowerShellなど)は、ハッキングされたフォルダー、その名前、およびフォルダー内のファイルを表示できる。

PowerShell(クロスプラットフォーム) PowerShellは、Microsoft Windowsにおけるコマンドプロンプトの後継アプリとして始まったが、現在ではクロスプラットフォームの、無料でオープンソースのシェルである。

Get-ChildItemコマンドレットは、デフォルトでは、パラメーターを介して設定されない限り、隠し項目を表示しない。-Forceパラメーターを使用すると、隠し項目を含むすべての項目が表示される。-Hiddenパラメーターを使用すると、通常の項目を除き、隠し項目のみが表示される。このコマンドレットには、特定の属性によるきめ細かなフィルタリングを可能にする-Attributesパラメーターも備わっている。

Get-ItemPropertyとSet-ItemPropertyコマンドレットは、各ファイルまたはディレクトリのAttributesプロパティを照会または変更することができる。

参考文献

外部リンク

Bellevue Linux Users Group:: Computer Hope:Microsoft DOS command .NOMEDIA file