Macの隠しファイルを表示する|仕組みは3つあり対処も違う
mac hidden files show という調べ方に返ってくる答えは、たいてい同じキーの組み合わせです。目の前の用事にはそれで足ります。困るのはその10分後で、出るはずのフォルダが出てこなかったり、出てきたものが触ってはいけないシステムの領域だったりします。理由は単純で、macOSがものを隠す仕組みは3つあり、互いに無関係だからです。どの仕組みで隠れているのかが分かれば、それが自分で編集してよい設定ファイルなのか、Appleが管理している領域なのか、そもそも書き換えを拒否される場所なのかが最初に判別できます。
隠す仕組みは3つあり、対処も別
1つ目は先頭のピリオドです。名前がピリオドで始まるものを隠し扱いにするという約束事で、Finderもシェルもこれに従います。.zshrc や .gitignore、.env、.DS_Store がここに入ります。ファイル自体は普通のファイルで、名前だけがすべてです。
2つ目はフラグです。macOSはファイルの情報の中に非表示の印を持っていて、これは名前とは完全に別物です。普通の名前のフォルダでもこの印があればFinderから消えます。ホームフォルダの中の「ライブラリ」がこれで隠れていて、名前の先頭を探しても理由が見つからないのはそのためです。
3つ目は、厳密には隠すことではないのに、いちばん混同されるものです。システム整合性保護と呼ばれる仕組みで守られた領域には、保護の印が付いています。見えることは多いのに書き換えができず、返ってくるのは権限の問題に見えるメッセージです。
手を出す前にこの3つのどれかに仕分けておくと、無駄な時間の大半が消えます。ピリオドで始まるものは自分で編集してよいもの。フラグで隠れているものは多くがAppleの管理下だが例外もあるもの。保護された領域は、設計として触らせない場所です。
隠しファイルが急に必要になる場面
この検索は好奇心から生まれることが少なく、たいてい具体的な用事が背景にあります。そして用事によって、関係する仕組みが変わります。
開発の作業がいちばん多い入口です。シェルの設定、.env に書いた接続情報、除外リスト、エディタの設定、案件ごとのツールの設定は、どれも先頭がピリオドのファイルです。ここで必要なのは見えることではなく、開いて書き換えられることです。
次に多いのがアプリの保存データです。設定、キャッシュ、コンテナ、メールのデータ、ブラウザのプロファイルは、ホームの中の「ライブラリ」の下にあります。こちらはピリオドではなくフラグで隠れています。サポートの手順書はここへ案内してくることが多く、ホームを開いてもフォルダが無い、という段階で毎回つまずきます。
3つ目は不具合の調査です。容量が減っていく、同期が止まる、消したはずのものが戻ってくる。この場合、隠れている項目は目的ではなく手がかりになります。ボリュームごとのごみ箱、作り直されている索引、書類の履歴の保管場所などです。用事が違えば必要な手段も違うので、まず自分がどれをやろうとしているのかを決めてから操作に入るほうが速く終わります。
いちばん多い答えは切り替えのキー
Finderのウインドウで command + shift + ピリオドを押すと、隠し項目の表示と非表示が切り替わります。設定画面の奥ではなく切り替え式で、すべてのFinderウインドウに同時に効き、もう一度押すまで維持されます。
出てくるのは、ピリオドで始まるものとフラグで隠れているものの両方です。ホームフォルダで押すと、.zshrc や .Trash に混じって「ライブラリ」も現れます。開発の道具を入れるたびに増えていくピリオド始まりのフォルダも一緒に並びます。この状態で表示される項目は少し薄い色で描かれます。これは異常の印ではなく、切り替えが有効な間だけ見えているという合図です。
覚えておきたいのは2点です。この操作はFinderの描き方を変えるだけで、ディスクの中身は何も変わりません。そして常時オンにしておくと、実際に使うフォルダにたどり着くまでに大量の項目を通り過ぎることになります。用事のときだけ出して、終わったら戻す使い方が現実的です。
ターミナル側に隠しファイルという概念は無い
シェルにあるのは概念ではなく指定です。ls だけならピリオドで始まるものは省かれます。ls -a は全部を出しますが、現在の場所と親を指す . と .. の2行も一緒に出ます。ls -A はこの2行だけを除きます。実際に見たいのはたいてい後者です。
ここで効いてくるのが、シェルはフラグを見ないという事実です。「ライブラリ」は ls の結果に普通に並びます。Finderには出ないのにターミナルには出るフォルダは、同期の不具合でも表示の壊れでもなく、フラグが仕事をしているだけです。
この違いは、他人の手順書を読むときにも効きます。ターミナル前提で書かれた説明は隠しファイルにまったく触れずに進みますが、同じ作業をFinderでやろうとすると最初の1歩で止まります。逆にFinder前提の説明は、切り替えを入れる指示から始まります。どちらの前提で書かれた手順なのかを見分けられれば、途中で行き詰まる回数が減ります。
フラグそのものを見るには ls -lO を使います。グループとサイズの間に列が増えます。標準の状態なら /usr と /bin には保護と非表示の両方が、/Volumes には非表示が付いていて、普通のフォルダにはハイフンだけが出ます。どの仕組みで隠れているのかは、この1行で判別できます。
フラグを付ける、外す
フラグの操作は chflags です。マニュアルには、非表示を意味する語を指定すると印が付き、語の前に no を付けると外れる、と書かれています。つまり chflags nohidden ~/Library と打てば、全体の切り替えを使わずに、そのフォルダだけを常に見える状態にできます。逆に chflags hidden を使えば、共有している画面に出したくない作業用フォルダを引っ込めておけます。
向いているのは範囲の狭い用事です。常に見えていてほしいフォルダが1つある、あるいは目に入れたくないフォルダが1つある、という場合。逆に、中を見て回るための道具としては向きません。切り替えのキーが表示の仕方を変えるのに対し、こちらはディスク上の情報を書き換えるからです。
注意点も2つあります。システムのフォルダから印を外すこと自体は保護のかかっていない場所なら可能ですが、得るものはありません。見て回る場所として作られていないから隠れているだけです。そして保護のかかった場所では、何を打っても失敗します。システム整合性保護は標準で有効で、状態は csrutil status で確認できます。有効と表示されたなら、それを切るのではなく別の経路を探すのが正解です。
全部を出さずに、ライブラリだけを開く
多くの場合、目的は隠しファイル全般を見ることではありません。特定のフォルダ、たいていはホームの中の「ライブラリ」に着くことです。Finderには、切り替えを使わずに直行する経路が用意されています。
ヒント: 「ライブラリ」フォルダへ移動するには、Optionキーを押しながら、「ライブラリ」を選択します。 出典: support.apple.com
もう1つはパスを打つ方法です。shift + command + G で「フォルダへ移動」の欄が開き、入力の途中で候補が出ます。切り替えの状態に関係なく隠れたフォルダにも着けるので、行き先が分かっているときはこれがいちばん速い。サポートの記事やターミナルからコピーしたパスを貼るだけで済みます。
フォルダ単位の設定もあります。ホームフォルダを開いた状態で command + J を押すと表示オプションが出て、ホームフォルダのときだけライブラリを表示するチェック項目が並びます。効果がそのフォルダに限られるので、範囲としてはちょうどよい場面が多いはずです。
defaults コマンドが役に立つ場所
古くから出回っている書き方もあります。
defaults write com.apple.finder AppleShowAllFiles -bool true
killall Finder
キーの切り替えと同じ設定値を書いています。2行目が必要なのは、Finderがこの値を起動時に読むためです。killall Finder はFinderを終了して立ち上げ直すので、開いていたFinderのウインドウは閉じます。
人が手で操作する場面では、キーの切り替えのほうが速くて安全です。この書き方が生きるのは自動化の中です。新しい機械を初期設定するスクリプトや、人がキーを押すことを前提にできない手順に組み込む場合。戻すときは false にして、もう一度 killall Finder を実行します。
誤解しやすいのは、コマンドのほうが上位の設定だと思ってしまうことです。書いている値は同じなので、実行後に command + shift + ピリオドを押せば元に戻ります。二重にかかるものではありません。
見えるようになっても触らないもの
切り替えを入れると、ごみに見えてごみではないフォルダが出てきます。ボリュームの直下にある .Spotlight-V100、.fseventsd、.DocumentRevisions-V100、.TemporaryItems、.Trashes は、検索の索引、ファイルの変更記録、書類の履歴、ごみ箱の実体です。消しても空く容量はわずかで、システムが作り直します。
容量を調べる目的で表示を切り替えた場合は、Finderの一覧よりも、シェルで合計を出すほうが早く終わります。フォルダごとの合計を表示する du -sh のような使い方なら、隠れている項目も含めて数字が並ぶので、どこが太っているのかが一目で分かります。表示を切り替えて目で探す作業は、階層が深くなるほど当てになりません。
いちばんよく消されるのは .DS_Store です。Finderがそのフォルダの表示方法やアイコンの位置、ウインドウの大きさを覚えておくために書いています。消せばその設定が失われ、次に開いたときに新しく作られます。消しても残しても実害はなく、気にする理由があるとすれば、共有フォルダやバージョン管理に紛れ込みやすい点だけです。除外の設定に1行足しておけば済みます。
同じ窓にまとめる道具から見えること
最後に、日々の面倒の正体に触れておきます。Finderでは、先頭がピリオドの名前を新しく付けられません。つまり設定ファイルを作る、名前を変えるといった作業は、ターミナルか、パスを直接受け取れるエディタで行うことになります。一方で、どこにあるかを探して眺めるのはFinderです。フォルダを見ている窓と、その中身を書き換える窓が分かれている。これが、この検索の裏側にある本当の摩擦です。
フォルダとターミナルとAIが同じ窓にある作りは、この分断をなくす方向の設計です。隠れていたフォルダを表示したその場でコマンドを打ち、結果をそのまま一覧で確かめられるなら、切り替えの回数がそのまま減ります。何ができるのかはできることにまとまっています。方式ごとの違いを確かめたいなら他のファイル管理との比較が、機能の数ではなく作業の途中で窓がいくつ必要になるかという観点で並べています。使い方で迷いやすい点はよくある質問に集めてあります。
隠しファイルの表示は、それ自体が目的になることはまずありません。見えたあとに何をするのかが決まっていれば、切り替えを常時オンにしておく必要も、システムの領域を掘り返す必要もなくなります。
よくある質問
Macで隠しファイルを表示するキーは何ですか?
Finderのウインドウで command + shift + ピリオドを押すと切り替わります。すべてのFinderウインドウに同時に効き、もう一度押すまで維持されます。表示された項目は薄い色で描かれますが、これは異常ではなく、切り替えが有効な間だけ見えているという印です。ディスクの中身は変わりません。
ターミナルには出るのにFinderに出ないフォルダがあるのはなぜですか?
ファイルの情報に含まれる非表示のフラグを、Finderは見てシェルは見ないためです。ホームの中の「ライブラリ」が代表例です。ls -lO を実行するとフラグの列が増え、そこに非表示の印が付いていれば、名前がピリオドで始まっていなくてもFinderからは見えません。
.DS_Store は消しても大丈夫ですか?
壊れるものはありません。Finderがそのフォルダの表示方法やアイコンの位置を覚えるために書いているファイルで、消すとその設定が失われ、次に開いたときに新しく作られます。共有フォルダやバージョン管理に混ざるのが気になる場合は、除外の設定に加えておくのが一般的な対処です。
全部を表示せずにライブラリだけを開く方法はありますか?
3つあります。「移動」メニューをOptionキーを押しながら開いて「ライブラリ」を選ぶ方法、shift + command + G でパスを直接入力する方法、ホームフォルダで command + J を押して表示の設定からライブラリを出す方法です。常に見えるようにしたい場合は chflags nohidden ~/Library を実行します。