OS X 终端上“ls”输出中的@是什么意思?

OS X 终端上“ls”输出中的@是什么意思?

ls在目录中执行时,我得到以下输出:

drwxr-xr-x@ 12 xonic  staff    408 22 Jun 19:00 .
drwxr-xr-x   9 xonic  staff    306 22 Jun 19:42 ..
-rwxrwxrwx@  1 xonic  staff   6148 25 Mai 23:04 .DS_Store
-rw-r--r--@  1 xonic  staff  17284 22 Jun 00:20 filmStrip.cpp
-rw-r--r--@  1 xonic  staff   3843 21 Jun 21:20 filmStrip.h

我很好奇这是什么@意思。

答案1

它表示文件具有扩展属性。使用ls -l@来查看它们。

您可以使用xattr来编辑这些属性。xattr -h将为您提供内联帮助。

答案2

我首先想到的是,我认为这与文件具有可用的扩展属性有关。以下是类似讨论的链接:

http://discussions.apple.com/thread.jspa?messageID=5791060

因此,如果您在执行 ls 时看到带有“@”的文件,请尝试执行以下操作:

xattr -l <filename>

这应该会向您显示扩展属性。

您可以查看 xattr 的帮助以了解更多详细信息:

xattr --help
usage: xattr [-l] file [file ...]
       xattr -p [-l] attr_name file [file ...]
       xattr -w attr_name attr_value file [file ...]
       xattr -d attr_name file [file ...]

The first form lists the names of all xattrs on the given file(s).
The second form (-p) prints the value of the xattr attr_name.
The third form (-w) sets the value of the xattr attr_name to attr_value.
The fourth form (-d) deletes the xattr attr_name.

options:
  -h: print this help
  -l: print long format (attr_name: attr_value)

看起来如果你用“-l”查看额外的属性然后用“-d”删除它们,它可能会达到你想要的效果。不过,先在某个临时目录中练习一下,确保它能正常工作 ;)

答案3

来自ls(1)Mac OS X v10.6.1 的手册页:

如果文件或目录具有扩展属性,则 -l 选项打印的权限字段后面会跟一个 '@' 字符。否则,如果文件或目录具有扩展安全信息(例如访问控制列表),则 -l 选项打印的权限字段后面会跟一个 '+' 字符。

从可用的选项列表:

-@      Display extended attribute keys and sizes in long (-l) output.

-e      Print the Access Control List (ACL) associated with the file, if present, in long (-l) output.

这些会让你看到这些的价值扩展属性. 仅供参考,访问控制列表chmod(1)可以使用您可能已经知道的相同实用程序来设置信息。

似乎没有简单的方法通过命令行来执行具有扩展属性的任何操作。

答案4

这与扩展属性和访问控制有关。

来自sun ls 手册页

权限后面的字符是 ACL 或扩展属性指示符。如果文件与扩展属性关联且 -@ 选项有效,则此字符为 @。否则,如果文件与非平凡 ACL 关联,则此字符为加号 (+) 字符,否则为空格字符。

相关内容