LoginSignup
8
10

More than 5 years have passed since last update.

macOSで不可視ファイル属性を付与/削除する

Last updated at Posted at 2019-03-02

拡張属性 eXtended ATTRibute (xattr)

「macOS」「拡張属性」で検索するとほとんどが拡張属性を削除する方法で、付与する方法について説明されているページが少ないことと、「macOS」「不可視ファイル」で検索するとほとんどが「.(ピリオド)」から始まるフォルダにすれば不可視になるという説明や、不可視ファイルを閲覧可能にする方法の説明ばかりだったので、ここではmacOSがFinderでの可視・不可視を指定している仕組みと、それを利用して任意のフォルダ・ファイルの可視・不可視を操作する方法をまとめてみます。

可視・不可視を決定する拡張属性

macOSの不可視フォルダの1つとしてLibraryフォルダを見てみると、ファイルモードの末尾に拡張属性が付いていることを示す@マーク付いています。
拡張属性を操作するコマンドxattrを用いてどんな拡張属性が付いているか、Libraryフォルダを見てみるとcom.apple.FinderInfoに対して16進数で値が付加されていることがわかります。
結論から言うとこれがフォルダ・ファイルを不可視化する属性になります。

$ ls -la ~/
dwrx------@ user group Library

$ xattr -l ~/Library
com.apple.FinderInfo:
00000000  00 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00  |........@.......|
00000010  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00000020

不可視拡張属性を付与/削除する

まずは上記のLibraryフォルダから拡張属性を外してみます。

$ xattr -d com.apple.FinderInfo ~/Library

$ ls -la ~/
dwrx------  user group Library

これでLibraryに付いていたFinder(com.apple.FinderInfo)に関する拡張属性が削除され、FinderからLibraryフォルダが閲覧可能となりました。

次に、不可視拡張属性を付与します

$ xattr -wx com.apple.FinderInfo 0000000000000000400000000000000000000000000000000000000000000000 ~/Library

$ ls -la ~/
dwrx------@ user group Library

$ xattr -l ~/Library
com.apple.FinderInfo:
00000000  00 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00  |........@.......|
00000010  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00000020

元通りになり、FinderからはLibraryフォルダは不可視となりました。

まとめ

$ xattr -d com.apple.FinderInfo Folder #可視化

$ xattr -wx com.apple.FinderInfo 0000000000000000400000000000000000000000000000000000000000000000 Folder #不可視化

補足:xattrコマンド

option syntax
拡張属性名の表示      $ xattr [-lrsvx] file
-c 拡張属性の全消去      $ xattr -c [-rsv] file ...
-d 指定した拡張属性の消去   $ xattr -d [-rsv] attr_name file ...
-h ヘルプ
-l 拡張属性名と値の表示    $ xattr -l [-rsv] file
-p 指定した拡張属性の値の表示 $ xattr -p [-lrsvx]
-r ディレクトリを再帰的に検索
-s シンボリックリンクを辿らずリンク自体を対象とする
-v 対象ファイルが1つのみの場合もファイル名を表示する
-w 拡張属性値の書込
-x 拡張属性値を16進数表記とする

※拡張属性値を書き込む際は16進数表記で32bit単位の値である必要があるとのこと

8
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
10