O que significa @ na saída de "ls" no terminal OS X '?

81

Ao fazer um lsem 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 os @meios.

xon1c
fonte
1
xattr -r -d com.apple.TextEncoding *provavelmente o removerá se for um arquivo de texto, como um cabeçalho C ++ ou arquivo de origem, criado localmente. Se você fez o download, xattr -r -d com.apple.quarantine *provavelmente o removerá, para que você possa fazer coisas como editar um Makefile. Por alguma razão, a Apple não permite que você edite um Makefile, mas não permitem que você execute um Makefile, com com.apple.quarantine. Go figure ...
jww

Respostas:

75

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

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

Ignacio Vazquez-Abrams
fonte
8
obrigado. com.apple.quarantine encontrado, aqui é o que é e como lidar com ele por uma questão de exaustividade: superuser.com/questions/28384/...
xon1c
24

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

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

Portanto, se você vir um arquivo com "@" quando fizer um ls, tente fazer o seguinte:

xattr -l <filename>

Isso deve mostrar os atributos estendidos.

Você pode verificar a ajuda do xattr para obter 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 para os atributos extras com "-l" e removê-los com "-d", provavelmente fará o que deseja. Pratique isso em um diretório temporário em algum lugar primeiro e verifique se ele funciona;)

Brent escreve código
fonte
Muito obrigado! Parece que o diretório em questão foi marcado como com.apple.quarantine, que é uma medida de segurança para proteger contra scripts e aplicativos desonestos da rede. Isso não pode causar o problema do diretório não listado. : / Vou procurar mais e postar a solução, se a encontrar.
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 será seguido por um caractere '@'. Caso contrário, se o arquivo ou diretório tiver informações de segurança estendidas (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.

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

Não parece haver uma maneira fácil da linha de comando de fazer algo com atributos estendidos.

Ed Carrel
fonte
2
Atributos estendidos podem ser visualizados e manipulados com o comando xattr (disponível apenas no OS X v10.5 e .6). Parece não ter uma página de manual, mas xattr -himprimirá sua ajuda interna.
9789 Gordon Davisson
xattragora tem uma página de manual e você pode usar xattr -l filepara listar todos os atributos ou xattr -p attribute_name fileimprimir um atributo específico.
Lri
9

Na página do manual para ls :

Se a opção -l for fornecida, as seguintes informações serão exibidas para cada arquivo: modo de arquivo, número de links, nome do proprietário, nome do grupo, número de bytes no arquivo, mês abreviado, arquivo do dia do mês modificado pela última vez, arquivo da hora modificado pela última vez, arquivo minuto modificado pela última vez e o nome do caminho.

Além disso, para cada diretório cujo conteúdo é exibido, o número total de blocos de 512 bytes usados ​​pelos arquivos no diretório é exibido em uma linha por si só, imediatamente antes das informações para os arquivos no diretório.

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

Usar:

ls -la@e

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


fonte
8

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

Na página de manual do sun ls :

O caractere após as permissões é uma ACL ou indicador de atributos estendidos. Esse caractere é um @ se atributos estendidos estiverem associados ao arquivo e a opção - @ estiver em vigor. Caso contrário, esse caractere será um sinal de mais (+), se uma ACL não trivial estiver associada ao arquivo ou, se não, um caractere de espaço.

Andre Miller
fonte
7

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

Se você " 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 arquivo específico.

Normalmente, são coisas como o FinderInfo da velha escola, informações de codificação de texto ou informações de "quarentena" que fornecem a "Este arquivo foi baixado da Web, você tem certeza de que deseja abri-lo?" Aviso.

David Gelhar
fonte
1
Atributos estendidos não são exclusivos da plataforma mac. Vários sistemas operacionais suportam esse recurso no nível do arquivo.
27610 Stefan Kendall
@ iftrue: em última análise, é um recurso do sistema de arquivos.
Joey
6

Na página do manual dels :

O formato longo
[…] Se o arquivo ou diretório tiver atributos estendidos, o campo de permissões impresso pela -lopção será seguido por um @caractere ' '. [...]

quiabo
fonte
2
Observe que o '@' também pode ocultar o '+' que normalmente estaria lá para indicar que o arquivo / diretório tem uma ACL associada a ele. Tente 'ls -le @ O' - que lista xattrs, ACL (se houver) e também quaisquer sinalizadores.
21139 Gordon Davisson