O que significa o @ na saída do terminal “ls” no OS X '?

76

Ao fazer um ls em um diretório, recebo a seguinte saída:

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

Eu queria saber o que significa o @ .

    
por xon1c 22.06.2010 / 19:57

7 respostas

72

Indica que o arquivo possui atributos estendidos. Use ls -l@ para vê-los.

Você pode usar xattr para editar esses atributos. xattr -h lhe dará a ajuda em linha para isso.

    
por 22.06.2010 / 20:00
23

Na minha cabeça, acho que tem algo a ver com o arquivo ter atributos estendidos disponíveis. Aqui está um link para uma discussão semelhante:

link

Se você vir um arquivo com um "@" ao fazer um ls, tente fazer isso:

xattr -l <filename>

Isso deve mostrar os atributos estendidos.

Você pode verificar a ajuda do xattr para mais detalhes:

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)

Parece que se você olhar os atributos extras com "-l" e depois removê-los com "-d", provavelmente fará o que quiser. Pratique isso em um diretório temporário em algum lugar e verifique se funciona;)

    
por 26.08.2009 / 22:05
20

Na página do manual ls (1) no Mac OS 10.6.1:

Se o arquivo ou diretório tiver atributos estendidos, o campo de permissões impresso pela opção -l é seguido por um caractere '@'. Caso contrário, se o arquivo ou diretório tiver estendido as informações de segurança (como uma lista de controle de acesso), o campo de permissões impresso pela opção -l será seguido por um caractere '+'.

Na lista de opções disponíveis:

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

Eles permitirão que você veja o valor dessas opções estendidas. FWIW, as informações da ACL podem ser definidas usando o mesmo utilitário chmod (1) que você provavelmente já conhece. : -)

Não parece ser um caminho fácil a partir da linha de comando para fazer qualquer coisa com atributos estendidos.

    
por 06.11.2009 / 14:04
9

Na página de manual do 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.

Uso:

ls -la@e

para mais informações sobre arquivos ou diretórios com esses atributos / informações.

    
por 06.11.2009 / 14:05
8

Isso está relacionado a atributos estendidos e controle de acesso.

Na página de manual de sun :

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.

    
por 06.11.2009 / 14:04
7

O "@" significa que o arquivo tem "atributos estendidos" associados a ele.

Se você fizer " ls -@ -l ", poderá ver quais atributos existem para cada arquivo. Você também pode fazer algo como " xattr -l pgsql.so " para despejar os atributos de um determinado arquivo.

Geralmente, são coisas como o FinderInfo da velha escola, informações de codificação de texto ou as informações de "quarentena" que fornecem "Esse arquivo foi baixado da Web, tem certeza de que deseja abri-lo?" aviso.

    
por 14.07.2010 / 18:43
6

Na página de manual de 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. […]

    
por 26.08.2009 / 22:08