属性

属性とは、ファイルに属するけれどもそのファイルの一部ではないデータ・フィールドのことです。例えば、属性はファイル・サイズの計算には含まれませんが、属性をコピーしたり、ファイル自体触れることなく属性に変更を加えたりすることができます。システムはこれら属性をファイル・サイズやファイル・タイプ、ファイルが最後に変更された日付などを保存するのに使用します。この仕組みは他のオペレーティング・システムやそのファイル・システムと似ています。

他のオペレーティング・システムとの違いは、任意のファイルに対して任意の種類の属性を追加できること、およびTrackerウィンドウの中でその属性を表示したり編集したりすることが可能であることです。必要なことはファイル・タイプに追加したい属性の種類(文字列や整数値、時刻など)を定義し、属性に名前と説明を付けることだけです。

ファイルそのものは中身を含んでいる必要すら全くありません。例えば、次のPeopleファイルをご覧ください:

people.png

ご覧の通り、これらはすべて属性が付与された大きさが0のファイルです。Trackerウィンドウの右側で"John Nox"の電子メール属性を編集中です。

Peopleや電子メール・ファイル、音声ファイルがデフォルトでそうしているように、これら属性をインデックス化することにより、Haikuの高速クエリ・システムを使用して属性を検索することもできます。

index Trackerにおける属性

属性はデータベースやスプレッド・シートと非常によく似た形で表示されます。Trackerを使うことで、どの属性(列)を表示するのかを選択したり、属性に従ってファイル・リストの順番(行)を並べ替えたりできます。

Trackerで属性を操作するには、Trackerウィンドウを開いてAttributesメニューをクリックし、表示したい属性を選択します。あるいは単純に列見出しを右クリックし、コンテクスト・メニューで該当する項目をマークします。また、列見出しをドラッグ・アンド・ドロップするだけで、列を再配置することができます。列をウィンドウの外に移動させることにより、不要な列をすばやく取り除くことができます。

列見出し中の2つの属性の間の線をダブル・クリックすると、列幅が自動的に適切なサイズに調整されます。

列見出しをクリックすると、ソートの順序が昇順から降順へ切り替わります。SHIFTを押しながら列見出しをクリックすることで、2番目のソート順序を決めることができます。例えば、1番目のソート順序を会社名、2番目のソート順序をコンタクト名にしてPeopleファイルを並べ替えることができます。例として上のスクリーン・ショットをご覧ください。2番目のソート順序は、列見出しすぐそばの、1番目のソート順序よりも明るい色の目印でマークされています。

これら属性の編集はファイルのリネームと同様にシンプルです: 項目をクリックするか、ALT Eを押します。属性間の移動はTABおよびSHIFT TABで行います。変更を適応せずに編集モードを抜けるにはESCを押します。

index Terminalにおける属性

コマンド・ラインがお好みの場合やスクリプトを使って大量のファイルを処理しようという場合に備えて、Terminalから属性を制御できるコマンドがいくつか用意されています。

index listattr

listattrは個々のファイルの属性の一覧を表示します。属性の中身については表示しません。

使い方: listattr 'filename' ['filename' ...]

上のスクリーン・ショットの例です:

 ~/people ->listattr Clara\ Botters
File: Clara Botters
   Type         Size                 Name
-----------  ---------  -------------------------------
MIME String         21  "BEOS:TYPE"
        Text         14  "META:name"
        Text          6  "META:nickname"
        Text          1  "META:company"

        Text         18  "META:address"
        Text          8  "META:city"
        Text          1  "META:state"
        Text          1  "META:zip"
        Text          1  "META:country"

        Text          1  "META:hphone"
        Text         13  "META:wphone"
        Text          1  "META:fax"
        Text         19  "META:email"
        Text          1  "META:url"

        Text          5  "META:group"
    Raw Data         20  "_trk/pinfo_le"
 
131 bytes total in attributes.

コンタクト情報を保持しているすべての"META:*"属性に加えて、システムによって管理されている次の2つの属性が存在します:

"Clara"の後ろのバック・スラッシュに関する補足です。Terminalでは'"*\$?!等の特別な文字を「エスケープ」する必要があります。"Clara"と"Botters"の間のスペースもエスケープする必要のある文字の1つです。従ってこの例のバック・スラッシュは、実は空白文字の直前にあるのであり、"Clara"の後ろにあるのではありません。

index catattr

catattrはファイルの指定された属性の内容を表示します。

使い方: catattr [--raw|-r] attr_name file1 [file2...]

先のファイルを再度例にします:

 ~/people ->catattr META:city Clara\ Botters
Clara Botters : string : Whelton

index addattr

addattrはファイルに属性を追加します。同時に属性の内容を埋めることもできます。

使い方: addattr [-t type] attr value file1 [file2...]
    または: addattr [-f value-from-file] [-t type] attr file1 [file2...]
 
         タイプは次のうちのいずれか1つです:
                 string, mime, int, llong, float, double, bool, icon, raw
                 または数値です(例: 0x1234, 42, 'ABCD', ...)
         デフォルトは"string"です。

ではここで、あなたの親友のClaraが多国籍企業であるBarkelbaer社で働くことになりました。これまで空であった"Company"属性(「文字列」型)をその情報で埋めましょう:

 ~/people ->addattr -t string META:company Barkelbaer\ Inc. Clara\ Botters

index rmattr

rmattrはファイルから属性を削除します。

使い方: rmattr [-p] attr filename1 [filename2...]
         'attr'はそのファイル属性の名前です。
         '-p'が指定されると、'attr'はパターンとみなされます。

実用的な観点から見れば、単に"Fax"属性の内容を埋めないことで十分対応することができますが、次のようにタイプすることにより、Claraファイルから"Fax"属性を完全に削除することができます:

 ~/people ->rmattr META:fax Clara\ Botters

index copyattr

copyattrは1つ以上のファイルの属性を他のファイルにコピーします。デフォルトでは実際のファイルの中身についてはコピーされません

使い方: copyattr <options> <source> [ ... ] <destination>

属性に加えてファイルの中身そのものもコピーしたい場合は、"-d"または"--data"オプションを追加します。


以上のコマンドに関する情報や各コマンドのオプションに関する情報は、コマンド名のうしろに"-h"または"--help"を続けてタイプすることにより見ることができます。