Attributes(属性)

属性是一些数据段,它们属于文件,但却不是文件的组成部分,例如:它们不计入文件的大小,而且可以在不改变文件本身的情况下,进行复制和修改。系统利用属性来储存文件信息,例如:文件大小,类型以及最近的修改日期。这与其他的系统和文件系统相类似。

所不同的是,您可以为文件添加任何类型的属性,并可以在 Tracker 窗口中显示和修改该属性。你只需要在文件类型中添加你所希望的属性类型(例如:字符串,整数或者时间),然后进行命名,给出相关的描述。

文件本身设置不需要任何的内容,请看下面 People 文件的例子:

people.png

您可以看到,所有的零大小文件都有附加属性,而在 Tracker 中,“John Nox” 的 E-mail 属性正在进行修改。

如果您对这些属性做出索引,类似于 People,Email 或者音频文件默认的那样,它们在 Haiku 的快速查询系统中也可以查询到。

index Tracker中的属性

属性的显示非常类似于数据库或者电子表格。利用Tracker,你也可以选择显示哪些属性(列),并依此来对文件(行)进行分类。

为此,打开一个 Tracker 窗口,点击 Attributes 菜单,选择希望显示的属性。或者,右键点击列标题,然后在快捷菜单中标记该项目。您可以通过简单的拖拽来进行纵列排序;降序排列标题。最快的移除您不需要的列的方式是直接从窗口中移出该列。

双击标题中两个属性之间的竖线,可以自动地对列的宽度进行最佳的调整。

您可以通过点击列标题来进行升序或者降序的排列 您也可以在点击列标题的同时按下 SHIFT 键来进行二次排序。 例如,你可以在联系人姓名排序的基础上,再次通过公司来对你的 People 文件进行排序。以上面的截图为例,在标题中,二次排序以较浅的颜色进行了标记。

属性的编辑和修改文件名一样简单:点击该项或者按 ALT E 键,然后使用 TABSHIFT TAB键在属性之间移动。按下 ESC 键,退出编辑状态,不执行修改。

index 终端中的属性

如果你喜欢使用命令行,或者计划使用脚本来处理较多的文件,那么在 Terminal 中有一些可用于控制属性的命令。

index listattr

listattr 命令列出了文件的属性,但不显示属性内容。

usage: 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:*" 属性用于显示联系方式,还有两个由系统管理的属性:

需要注意的是 "Clara" 之后的反斜杠。在 Terminal 中您必须 "避开" 特殊字符,例如 '"*\$?! ;同时,处于 "Clara" 和 "Botters" 之间的空格也属于此类字符。所以反斜杠真实的出现在空格字符之前,而不是 "Clara" 之后。

index catattr

catattr 命令显示了文件特有属性的内容。

usage: catattr [--raw|-r] attr_name file1 [file2...]

还是上面的例子:

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

index addattr

addattr 命令用于为文件添加属性,并进行赋值。

usage: addattr [-t type] attr value file1 [file2...]
    or: addattr [-f value-from-file] [-t type] attr file1 [file2...]
 
         Type is one of:
                 string, mime, int, llong, float, double, bool, icon, raw
                 or a numeric value (ie. 0x1234, 42, 'ABCD', ...)
         The default is "string"

所以当亲爱的 Clara 在跨国公司 Barkelbaer Inc.找到了工作,你就可以为原本空白的 "Company" 属性补充该数据 (而此数据也属于 "string" 类型):

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

index rmattr

rmattr 命令用于从文件中完全移除其某一属性。

usage: rmattr [-p] attr filename1 [filename2...]
         'attr' is the name of an attribute of the file
         If '-p' is specified, 'attr' is regarded as a pattern.

即使不填写 "Fax" 属性,在实际应用中也已经足够了;所以你可以通过键入下面的命令来从 Clara 文件中完全删除它:

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

index copyattr

copyattr 命令用于从一些文件向另一些文件拷贝属性。默认情况下,文件的实际内容并没有进行拷贝。

Usage: copyattr <options> <source> [ ... ] <destination>

如果您希望完全拷贝文件的属性及其数据文件,你可以在命令后添加 "-d" 或者 "--data" 来完成。


更多有关这些命令和它们的参数选项的信息,您可以通过键入命令名,然后辅以 "-h" 或者 "--help" 选项来获取。