osx - What does the @ mean on the output of "ls" on OS X' terminal?

06
2014-04
  • xon1c

    When doing an ls in a directory I get the following output:

    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
    

    I was wondering what the @ means.

  • Answers
  • Alex Feinman

    It indicates that the file has extended attributes. Use ls -l@ to see them.

    You can use xattr to edit these attributes. xattr -h will give you the inline help for it.

  • Brent Nash

    Off the top of my head, I think is has something to do with the file having extended attributes available. Here's a link to a similar discussion:

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

    So if you see a file with an "@" when you do an ls, try doing this:

    xattr -l <filename>
    

    That should show you the extended attributes.

    You can check xattr's help for more details:

    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)
    

    It seems like if you look at the extra attributes with "-l" and then remove them with "-d" it'll probably do what you want. Practice this in a temporary directory somewhere first though and make sure it works ;)

  • Ed Carrel

    From the ls(1) man page on Mac OS 10.6.1:

    If the file or directory has extended attributes, the permissions field printed by the -l option is followed by a '@' character. Otherwise, if the file or directory has extended security information (such as an access control list), the permissions field printed by the -l option is followed by a '+' character.

    From the available options list:

     -@      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.
    

    These will let you see the value of those extended options. FWIW, ACL info can be set using the same chmod(1) utility you are probably already aware of. :-)

    There doesn't appear to be an easy way from the command line to do anything with extended attributes.

  • paxdiablo

    From the man page for ls:

    If the -l option is given, the following information is displayed for each file: file mode, number of links, owner name, group name, number of bytes in the file, abbreviated month, day-of-month file was last modified, hour file last modified, minute file last modified, and the pathname.

    In addition, for each directory whose contents are displayed, the total number of 512-byte blocks used by the files in the directory is displayed on a line by itself, immediately before the information for the files in the directory.

    If the file or directory has extended attributes, the permissions field printed by the -l option is followed by a '@' character. Otherwise, if the file or directory has extended security information (such as an access control list), the permissions field printed by the -l option is fol-lowed followed lowed by a '+' character.

    Use:

    ls -la@e
    

    for more information on files or directories with those attributes/information.

  • David Gelhar

    The "@" means that the file has "extended attributes" associated with it.

    If you do "ls -@ -l", you can see what attributes there are for each file. You can also do something like "xattr -l pgsql.so" to dump the attributes for a particular file.

    Typically they're stuff like old-school FinderInfo, text encoding info, or the "quarantine" info that gives you the "This file was downloaded from the web, are you sure you want to open it?" warning.

  • alanc

    This is related to extended attributes and access control.

    From the man page of sun ls:

    The character after permissions is an ACL or extended attributes indicator. This character is an @ if extended attributes are associated with the file and the -@ option is in effect. Otherwise, this character is a plus sign (+) character if a non-trivial ACL is associated with the file or a space character if not.

  • Gumbo

    From the man page of ls:

    The Long Format
    […] If the file or directory has extended attributes, the permissions field printed by the -l option is followed by a '@' character. […]


  • Related Question

    osx - ls -la symbolics... what does that last symbol mean?
  • user17047

    Possible Duplicate:
    what does the @ mean on the output of ls on os x terminal?

    when I type ls -la I get this familiar output...

    drwxr-xr-x+  38 kent  staff       1292 Nov  6 11:09 .
    drwxr-xr-x    5 root  admin        170 Aug 14 14:11 ..
    -rw-r--r--@   1 kent  staff         16 Jun 18 14:13 .AB64CF89
    -rw-------    1 kent  staff          3 May  5  2009 .CFUserTextEncoding
    -rw-r--r--@   1 kent  staff      15364 Nov  6 11:11 .DS_Store
    

    my question is about the file settings on the far left eg:

    drwxr-xr-x+
    

    I know that the first char 'd' means directory. and the next 9 chars I understand as well (permissions) but what is the final char in this field? (empty or + or @ )


  • Related Answers
    Know someone who can answer? Share a link to this question via email, Google+, Twitter, or Facebook.