Mac PC Web

ls の @って何だ!? Extended Attributes と xattr

MacはGUIが秀逸なのは今更言うことじゃないけど、ターミナル(Windowならコマンドプロンプト)からも操作できるところがイイ。だが、ネットで調べないとよくわからないこともたくさんあるというマイナス面も出てくる。

今回、ダウンロードしてきたファイルの属性を見たら、ファイルのパーミッションが不足していたことが原因だったんだけど、それとともに @ という見慣れないものがあり、ちと調べてみた。

MC723JA:XML user$ ls -l
total 48
-rw——-@ 1 user  staff  21248 10 25  2010 Parser.php

この @ は、Extended Attributes で 元ファイル名の先頭にドットとアンダーバーが着いた別ファイル「._元のファイル名」で管理される付加情報ってことらしい。
簡単に確認するには、ls コマンドのオプションに@を使えばいい。

MC723JA:XML user$ ls -l@
total 48
-rw——-@ 1 user  staff  21248 10 25  2010 Parser.php
com.apple.quarantine        2

より詳細にしらべるには、 xattrコマンドがある。

MC723JA:XML user$ xattr -l Parser.php
com.apple.quarantine: 46

このxattrは このEA の追加削除も行えるので、xattr にdオプションと属性名を指定すれば、属性を削除できる。

MC723JA:XML user$ xattr -d com.apple.quarantine Parser.php
MC723JA:XML user$ ls -l@
total 48
-rw——-  1 user  staff  21248 10 25  2010 Parser.php

追記:情報元は、OS X ハッキング!の253 Leopard解体新書(4) ~拡張された拡張属性~

HFS Plus内ではそのファイルシステムに内包されるために目にすることは無いが、FAT32などのUSBメモリにファイルをコピーするとこのファイルが生成されることが確認できる。

3件のコメント

  1. へー、@の意味って、そうだったんだ。
    「元ファイル名の先頭にドットが着いた別ファイル」ってどうやって表示するのかな。
    ls -la
    じゃ、出てこない。

  2. 情報源はここ( http://news.mynavi.jp/column/osx/253/index.html )なんだけど、文末に書き忘れてた。
    さらに引用すると、「EAはTigerで実装されたHFS Plus独自の機構であり、ファイル本体とは別に存在するため、HFS Plus以外のファイルシステムへコピーすると原則して失われる(通常は「AppleDouble」の機能により、EAは「._元のファイル名」という形式の別ファイルに書き出されるが)。」だそうな。
    早速、FAT32なUSBメモリにファイルをコピーてみたr、「._元のファイル名」 が生成されてた。
    あぁ、元の文章にはアンダーバーが抜けてたな。

  3. USBメモリで「._元のファイル名」はよく見かけるね。これのことか!

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください