@在OS X'终端的“ ls”输出中表示@是什么意思?


81

如果做一个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
xattr -r -d com.apple.TextEncoding *如果它是在本地创建的文本文件(例如C ++头文件或源文件),则可能会将其删除。如果下载了它,则xattr -r -d com.apple.quarantine *可能会删除它,因此您可以执行诸如编辑Makefile之类的操作。出于某种原因,苹果不会允许你编辑一个Makefile,但允许您运行一个Makefile,用com.apple.quarantine。去图...
jww

Answers:



24

我想不到的是,该文件与具有扩展属性的文件有关。这是一个类似讨论的链接:

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”删除它们,则可能会做您想要的事情。不过,请先在某个地方的临时目录中进行练习,并确保其有效;)


非常感谢!似乎该目录已标记为com.apple.quarantine,这是一种安全措施,可防止网络上出现狡猾的脚本和应用程序。那不可能导致目录不列出的问题。:/我会四处逛逛,如果找到解决方案,就会发布解决方案。

20

在Mac OS 10.6.1的ls(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.

这些将使您看到这些扩展选项的价值。FWIW,可以使用您可能已经知道的相同chmod(1)实用程序设置ACL信息。:-)

从命令行似乎没有一种简单的方法可以对扩展属性进行任何操作。


2
可以使用xattr命令查看和操作扩展属性(仅在OS X v10.5和.6中可用)。它似乎没有手册页,但xattr -h会打印其内部帮助。
戈登·戴维森

xattr现在有一个手册页,您可以xattr -l file用来列出所有属性或xattr -p attribute_name file打印特定属性。
Lri 2013年

9

ls手册页中

如果指定了-l选项,则将为每个文件显示以下信息:文件模式,链接数,所有者名称,组名,文件中的字节数,缩写的月份,每月的最后一次修改日期,最后修改的小时文件,最后修改的分钟文件以及路径名。

另外,对于每个显示其内容的目录,目录中文件所使用的512字节块总数将单独显示在一行上,紧接在目录中文件的信息之前。

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

采用:

ls -la@e

有关具有这些属性/信息的文件或目录的更多信息。


8

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

sun ls手册页中

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


7

“ @”表示文件具有与其关联的“扩展属性”。

如果执行“ ls -@ -l”,则可以查看每个文件的属性。您也可以执行类似“ xattr -l pgsql.so”的操作来转储特定文件的属性。

通常,它们是老式的FinderInfo,文本编码信息或“隔离”信息,它们为您提供“此文件是从网络下载的,确定要打开吗?”。警告。


1
扩展属性不是mac平台独有的。许多操作系统都支持此文件级功能。
Stefan Kendall

@iftrue:不过,最终它是文件系统功能。
乔伊(Joey)

6

手册页ls

长格式
[…]如果文件或目录具有扩展属性,则该-l选项打印的权限字段后跟一个' @'字符。[…]


2
请注意,“ @”也可以隐藏“ +”,该“ +”通常会指示文件/目录具有与之关联的ACL。尝试“ ls -le @ O”-它将列出xattrs,ACL(如果存在)以及所有标志。
戈登·戴维森
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.