そのEAには何が書かれているのか?
EAとは、Extended Attributes=拡張属性。頭文字を拾ってEAと略されるのだ。普段はほとんど目立たないEAであるが、たかが付属情報と思ってはいけない。今時のOSXの便利な機能は、すべてEAによって支えられている。以前調べた、Time MachineやSpotlight、HFS+の圧縮機能が、それを物語っている。
EAなくして、便利なOSXは存在できないのだ。
覗き見る方法
$ ls -l ~/Desktop/sample.textClipping −rw-r--r--@ 1 zari staff 0 3 6 14:59 ~/Desktop/sample.textClipping
- この時@が見えていたら、そのファイルにはEAが含まれているという暗示である。
- lsコマンドのオプションに@を追加して実行してみると、EAのキーが表示される。
$ ls -l@ ~/Desktop/sample.textClipping
−rw-r--r--@ 1 zari staff 0 3 6 14:59 ~/Desktop/sample.textClipping
com.apple.FinderInfo 32
com.apple.ResourceFork 554
- この出力結果から、以下の情報が読み取れる。
- com.apple.FinderInfoというキーには、32バイトの内容が保存されている。
- com.apple.ResourceForkというキーには、554バイトの内容が保存されている。
- すると当然、32バイトや554バイトの内容を見てみたくなる。xattrコマンドを使ってみる。
$ xattr -l ~/Desktop/sample.textClipping com.apple.FinderInfo: 00000000 63 6C 70 74 4D 41 43 53 00 00 00 00 00 00 00 00 |clptMACS........| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 com.apple.ResourceFork: 00000000 00 00 01 00 00 00 01 BC 00 00 00 BC 00 00 00 6E |...............n| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000000A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000000B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000000C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000000D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000000E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000000F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000100 00 00 00 36 00 74 00 65 00 78 00 74 00 20 00 63 |...6.t.e.x.t. .c| 00000110 00 6C 00 69 00 70 00 70 00 69 00 6E 00 67 00 0D |.l.i.p.p.i.n.g..| 00000120 00 54 00 68 00 69 00 73 00 20 00 69 00 73 00 20 |.T.h.i.s. .i.s. | 00000130 00 74 00 65 00 73 00 74 00 2E 00 00 00 1B 74 65 |.t.e.s.t......te| 00000140 78 74 20 63 6C 69 70 70 69 6E 67 0A 54 68 69 73 |xt clipping.This| 00000150 20 69 73 20 74 65 73 74 2E 00 00 00 1B 74 65 78 | is test.....tex| 00000160 74 20 63 6C 69 70 70 69 6E 67 0D 54 68 69 73 20 |t clipping.This | 00000170 69 73 20 74 65 73 74 2E 00 00 00 40 00 00 00 01 |is test....@....| 00000180 00 00 00 00 00 00 00 00 00 00 00 03 75 74 78 74 |............utxt| 00000190 00 00 01 00 00 00 00 00 00 00 00 00 75 74 66 38 |............utf8| 000001A0 00 00 01 00 00 00 00 00 00 00 00 00 54 45 58 54 |............TEXT| 000001B0 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 |................| 000001C0 00 00 01 BC 00 00 00 BC 00 00 00 6E 00 00 00 00 |...........n....| 000001D0 8F 03 00 00 00 1C 00 6E 00 03 75 74 78 74 00 00 |.......n..utxt..| 000001E0 00 22 75 74 66 38 00 00 00 2E 54 45 58 54 00 00 |."utf8....TEXT..| 000001F0 00 3A 64 72 61 67 00 00 00 46 01 00 FF FF 00 00 |.:drag...F......| 00000200 00 00 08 00 00 00 01 00 FF FF 00 00 00 3A 09 00 |.............:..| 00000210 00 00 01 00 FF FF 00 00 00 59 0A 00 00 00 00 80 |.........Y......| 00000220 FF FF 00 00 00 78 0B 00 00 00 |.....x....| 0000022a
- なるほど、なるほど、こうゆうバイトコードの並びが書き込まれているのか。
今まではこのレベルで満足していたけど、その内容が示す意味も知りたい!
com.apple.FinderInfo
- その内容は「clptMACS」というテキストの並びがすべてである。これは一体何か?
- getFileInfoコマンドを実行することで、謎が解けた!
$ getFileInfo ~/Desktop/sample.textClipping file: "~/Desktop/sample.textClipping" type: "clpt" creator: "MACS" attributes: avbstclinmedz created: 03/06/2014 14:59:48 modified: 03/06/2014 14:59:48
- ファイルタイプ=clpt、クリエーター=MACS、
つまり、ファイルタイプとクリエーターの並びなのだ。
com.apple.ResourceFork
- ところでリソースフォークへは、/..namedfork/rsrcを追記することで、アクセスできるらしい。catコマンドで表示してみた。
$ cat ~/Desktop/sample.textClipping/..namedfork/rsrc
This is test.ext clipping
This is test.@utxtutf8TEXT??n?nutxt"utf8.TEXT:dragF???: ??Y
???x
- あまり代わり映えしない...。
- それもそのはず、リソースフォークには独自のフォーマットがある。
- OS9の頃であれば、ResEditで確認することができた。
- OSXの現在は、DeRezコマンドで確認できるらしい。(Xcodeのインストールが必要)
$ DeRez ~/Desktop/sample.textClipping data 'utxt' (256) { $"0074 0065 0078 0074 0020 0063 006C 0069" /* .t.e.x.t. .c.l.i */ $"0070 0070 0069 006E 0067 000D 0054 0068" /* .p.p.i.n.g...T.h */ $"0069 0073 0020 0069 0073 0020 0074 0065" /* .i.s. .i.s. .t.e */ $"0073 0074 002E" /* .s.t.. */ }; data 'utf8' (256) { $"7465 7874 2063 6C69 7070 696E 670A 5468" /* text clipping?Th */ $"6973 2069 7320 7465 7374 2E" /* is is test. */ }; data 'TEXT' (256) { $"7465 7874 2063 6C69 7070 696E 670D 5468" /* text clipping.Th */ $"6973 2069 7320 7465 7374 2E" /* is is test. */ }; data 'drag' (128) { $"0000 0001 0000 0000 0000 0000 0000 0003" /* ................ */ $"7574 7874 0000 0100 0000 0000 0000 0000" /* utxt............ */ $"7574 6638 0000 0100 0000 0000 0000 0000" /* utf8............ */ $"5445 5854 0000 0100 0000 0000 0000 0000" /* TEXT............ */ };
シンプルな「text clipping(改行コード)This is test.」という内容ながら、3つのデータ形式(utxt、utf8、TEXT)で重複して保存されているのだ!
次回に続く。
*1:テキストを選択して、デスクトップにドラッグ&ドロップすることで作成されるファイル。