属性

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

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

ファイルそのものは中身がある必要さえありません。たとえば、次の People ファイルを見てください。

people.png

見てのとおり、これらはすべて属性が付与されたサイズ 0 のファイルです。Tracker ウィンドウの右側で、"John Nox" のメール属性を編集中です。

People ファイル、メールファイル、または音声ファイルがデフォルトで行っているように、これら属性をインデックス化すれば、Haiku の高速クエリシステムを使って属性を検索できるようになります。

index Tracker での属性

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

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

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

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

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

index ターミナルでの属性

コマンドラインが好みか、スクリプトを使って大量のファイルを処理するつもりなら、ターミナルから属性を制御できるコマンドがいくつか用意されています。

以上のコマンドとそのオプションに関する詳しい情報は、コマンド名の次に "-h" または "--help" を続けてタイプすると得られます。

index listattr

listattr はファイルの属性を一覧表示します。属性の内容は表示しません。表示するためには、-l or --long オプションを追加する必要があります。

使い方: listattr [-l|--long] '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" のうしろのバックスラッシュに関する補足です。ターミナルでは、'"*\\$?! 等の特別な文字を「エスケープ」する必要があります。"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...]
 
         type は次のいずれか 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 はファイルから属性を削除します。

usage: rmattr [-p] attr filename1 [filename2...]

実用的には、単に "Fax" 属性の内容を入力しなければ十分ですが、次のようにタイプすると、Clara のファイルから "Fax" 属性を完全に削除できます。

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

index copyattr

copyattr は 1 つ以上のファイルの属性を、ほかのファイルにコピーします。デフォルトではファイルの実際の内容はコピーされません

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

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