ライブラリはなぜ見えなくなったのか?ファイルフラグを探る
Snow LeopardからMountain Lionに移行して、最初に躓いたのがライブラリフォルダが見えなくなってしまったこと。ちゃんと存在するんだけど、Finderからは見えなくなってしまった...。
- メニューから、option-移動 >> ライブラリ
- あるいは、command-shift-G、「~/Library」
以上どちらかの操作でライブラリにはアクセスできるのだけど、Finderから素直に見えていないと頻繁にアクセスする自分としては不便を感じる。そこでMountain Lion移行当初に、さっそくSnow Leopard以前と同じようにライブラリが常時見える設定にしておいた。ところが、先日OSX 10.8.3のアップデートを適用したら、再びライブラリフォルダが見えなくなってしまった...。さて、ライブラリが常時見える設定ってどうやるのだっけ?(忘れてしまった)
正解は...
$ chflags nohidden ~/Library
これでライブラリフォルダが常時見えるようになった!
ファイルフラグとは
- そもそもchflagsコマンドとは何かと言えば...
BSD 系 UNIX にはパーミッションとは別にファイルフラグという仕組みがあり、変更禁止、追加禁止などの設定をすることができる。なお、ファイルフラグは chmod のパーミッションとは全く別のものである。
chflagsコマンドの使い方: UNIX/Linuxの部屋
なるほど。
- そして、chflagsで指定したnohiddenは何をしているのかと言えば、ファイルフラグのhidden設定を削除しているのだ。
- ちなにみ、ファイルフラグの状態は、ls -lOで確認できる。
$ ls -lO ~ total 0 drwx------+ 15 bebe staff - 510 3 25 06:33 Desktop drwx------+ 399 bebe staff - 13566 3 14 14:03 Documents drwx------+ 204 bebe staff - 6936 3 25 10:34 Downloads drwx------@ 66 bebe staff hidden 2244 3 12 13:32 Library drwx------+ 6 bebe staff - 204 3 18 11:09 Movies drwx------+ 9 bebe staff - 306 2 28 09:28 Music drwx------+ 11 bebe staff - 374 10 23 16:53 Pictures drwxr-xr-x+ 11 bebe staff - 374 9 16 2012 Public drwxr-xr-x 4 bebe staff - 136 2 25 10:59 Sites
- 上記のようにLion以降の~/Libraryは、hiddenが設定されていたのだ!
- ちなみに、ファイルフラグの設定がない項目は、- が表示されている。
- nohiddenを設定すると、以下のように変化するのだ。
$ chflags nohidden ~/Library $ ls -lO ~ total 0 drwx------+ 15 bebe staff - 510 3 25 06:33 Desktop drwx------+ 399 bebe staff - 13566 3 14 14:03 Documents drwx------+ 204 bebe staff - 6936 3 25 10:34 Downloads drwx------+ 66 bebe staff - 2244 3 12 13:32 Library drwx------+ 6 bebe staff - 204 3 18 11:09 Movies drwx------+ 9 bebe staff - 306 2 28 09:28 Music drwx------+ 11 bebe staff - 374 10 23 16:53 Pictures drwxr-xr-x+ 11 bebe staff - 374 9 16 2012 Public drwxr-xr-x 4 bebe staff - 136 2 25 10:59 Sites
- 一方、ターミナル等からlsコマンドを実行したときは、ちゃんと表示される。
- 見えなくなるのはGUI環境からだけなのだ。
実験
- ちなみに、二つ以上のファイルフラグが設定されている場合は、以下のように表示された。
$ ls -lO ~/Desktop total 128 drwxr-xr-x@ 4 bebe staff uchg,hidden 136 10 16 16:08 folder/
- uchg,hiddenを設定してみた。
- するとカンマ区切りになった。
興味
- デスクトップの項目にhidden属性を設定すれば、散らかったデスクトップも素早く非表示にできた!(根本的には何も改善されないのだけど)
$ chflags hidden ~/Desktop/* または... $ chflags -R hidden ~/Desktop
- 上段chflags hidden ~/Desktop/* と 下段chflags -R hidden ~/Desktop の違いは...
- 上段は、デスクトップの第一階層のみ見えなくなるが、
- 下段は、デスクトップ以下すべての階層が見えなくなる。
ファイルフラグ一覧
- OSXのマニュアルによると、ファイルフラグには以下の属性があるらしい。
ファイルフラグ | 説明 | 意味 |
---|---|---|
arch, archived | set the archived flag (super-user only) | ? |
opaque | set the opaque flag (owner or super-user only). [Directory is opaque when viewed through a union mount] | ? |
nodump | set the nodump flag (owner or super-user only) | ? |
sappnd, sappend | set the system append-only flag (super-user only) | (フラグの変更には管理者権限が必要) フォルダにおいて追加のみ可能。変更はできない。 |
schg, schange, simmutable | set the system immutable flag (super-user only) | (フラグの変更には管理者権限が必要) 変更不可フラグ。設定するとFinderのロック属性がオンになる。 |
uappnd, uappend | set the user append-only flag (owner or super-user only) | フォルダにおいて追加のみ可能。変更はできない。 |
uchg, uchange, uimmutable | set the user immutable flag (owner or super-user only) | 変更不可フラグ。設定するとFinderのロック属性がオンになる。 |
hidden | set the hidden flag [Hide item from GUI] | GUI環境からアイテムを隠す。 |
- カンマ区切りの複数のファイルフラグは、どれか1つを設定すればOK。
- すべて同じ意味の設定になる。(左側のファイルフラグほどより短縮形)
- ファイルフラグの先頭にnoを付加すると、そのファイルフラグが削除される。
- 但し、ファイルフラグnodumpのみ、dumpの設定によって削除されるようだ。
参考ページ
以下のページがたいへん参考になりました。感謝です!
追記
- ちなみに、Finderから見えないファイルには、もう1つある。
- ファイルフラグにhiddenが設定されたファイル以外に、
- ファイル名が .(ピリオド)で始まるファイルも見えない。
- そういった不可視ファイルをすべてFinderで表示する方法もあるのだ。
# すべて表示する設定 $ defaults write com.apple.finder AppleShowAllFiles -boolean true; killall Finder # デフォルト表示へ戻す $ defaults delete com.apple.finder AppleShowAllFiles; killall Finder
*1:正確にはFinderだけでなく、各アプリケーションの開く・保存ダイアログ等からも見えなくなると思う