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 关联,则此字符为加号 (+) 字符,否则为空格字符。