¿Qué significa el @ en la salida de "ls" en el terminal OS X '?

81

Al hacer un lsen un directorio obtengo el siguiente resultado:

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

Me preguntaba qué @significa.

xon1c
fuente
1
xattr -r -d com.apple.TextEncoding *probablemente lo eliminará si es un archivo de texto, como un encabezado C ++ o un archivo fuente, creado localmente. Si lo descargó, xattr -r -d com.apple.quarantine *es probable que lo elimine, por lo que puede hacer cosas como editar un Makefile. Por alguna razón, Apple no le permite editar un Makefile, pero sí le permite ejecutar un Makefile con com.apple.quarantine. Vaya figura ...
jww

Respuestas:

75

Indica que el archivo tiene atributos extendidos. Use ls -l@para verlos.

Puede usar xattrpara editar estos atributos. xattr -hle dará la ayuda en línea para ello.

Ignacio Vazquez-Abrams
fuente
8
Gracias. encontrado com.apple.quarantine, esto es lo que es y cómo tratar con él en aras de la exhaustividad: superuser.com/questions/28384/...
xon1c
24

Fuera de mi cabeza, creo que tiene algo que ver con el archivo que tiene atributos extendidos disponibles. Aquí hay un enlace a una discusión similar:

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

Entonces, si ve un archivo con una "@" cuando hace un ls, intente hacer esto:

xattr -l <filename>

Eso debería mostrarle los atributos extendidos.

Puede consultar la ayuda de xattr para obtener más detalles:

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 si observa los atributos adicionales con "-l" y luego los elimina con "-d", probablemente haga lo que desee. Practique esto en un directorio temporal en algún lugar primero y asegúrese de que funcione;)

Brent escribe el código
fuente
¡Muchas gracias! Parece que el directorio en cuestión se marcó como com.apple.quarantine, que es una medida de seguridad para proteger contra scripts y aplicaciones poco fiables de la red. Eso no puede causar el problema del directorio no listado. : / Buscaré más y publicaré la solución si la encuentro.
20

Desde la página de comando man ls (1) en Mac OS 10.6.1:

Si el archivo o directorio tiene atributos extendidos, el campo de permisos impreso por la opción -l va seguido de un carácter '@'. De lo contrario, si el archivo o directorio tiene información de seguridad extendida (como una lista de control de acceso), el campo de permisos impreso por la opción -l va seguido de un carácter '+'.

De la lista de opciones disponibles:

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

Estos le permitirán ver el valor de esas opciones extendidas. FWIW, la información de ACL se puede configurar utilizando la misma utilidad chmod (1) que probablemente ya conozca. :-)

No parece haber una manera fácil desde la línea de comando para hacer algo con atributos extendidos.

Ed Carrel
fuente
2
Los atributos extendidos se pueden ver y manipular con el comando xattr (solo disponible en OS X v10.5 y .6). No parece tener una página de manual, pero xattr -himprimirá su ayuda interna.
Gordon Davisson el
xattrahora tiene una página de manual, y puede usarla xattr -l filepara enumerar todos los atributos o xattr -p attribute_name fileimprimir un atributo específico.
Lri
9

Desde la página de manual para ls :

Si se proporciona la opción -l, se muestra la siguiente información para cada archivo: modo de archivo, número de enlaces, nombre del propietario, nombre del grupo, número de bytes en el archivo, mes abreviado, día del mes en que se modificó por última vez, archivo de hora modificado por última vez, archivo de minutos modificado por última vez y el nombre de ruta.

Además, para cada directorio cuyos contenidos se muestran, el número total de bloques de 512 bytes utilizados por los archivos en el directorio se muestra en una línea por sí mismo, inmediatamente antes de la información de los archivos en el directorio.

Si el archivo o directorio tiene atributos extendidos, el campo de permisos impreso por la opción -l va seguido de un carácter '@'. De lo contrario, si el archivo o directorio tiene información de seguridad extendida (como una lista de control de acceso), el campo de permisos impreso por la opción -l se sigue seguido de un carácter '+'.

Utilizar:

ls -la@e

para obtener más información sobre archivos o directorios con esos atributos / información.


fuente
8

Esto está relacionado con los atributos extendidos y el control de acceso.

Desde la página de manual de sun ls :

El carácter después de los permisos es un ACL o un indicador de atributos extendidos. Este carácter es una @ si los atributos extendidos están asociados con el archivo y la opción - @ está vigente. De lo contrario, este carácter es un signo más (+) si una ACL no trivial está asociada con el archivo o un carácter de espacio si no.

Andre Miller
fuente
7

La "@" significa que el archivo tiene "atributos extendidos" asociados.

Si lo hace " ls -@ -l", puede ver qué atributos hay para cada archivo. También puede hacer algo como " xattr -l pgsql.so" para volcar los atributos de un archivo en particular.

Por lo general, son cosas como FinderInfo de la vieja escuela, información de codificación de texto o la información de "cuarentena" que le da el "Este archivo se descargó de la web, ¿está seguro de que desea abrirlo?" advertencia.

David Gelhar
fuente
1
Los atributos extendidos no son exclusivos de la plataforma mac. Varios sistemas operativos admiten esta función de nivel de archivo.
Stefan Kendall
@iftrue: en última instancia, es una característica del sistema de archivos.
Joey
6

De la página del manual dels :

El formato largo
[...] Si el archivo o directorio tiene atributos extendidos, el campo de permisos impreso por la -lopción va seguido de un carácter ' @'. [...]

Gumbo
fuente
2
Tenga en cuenta que '@' también puede ocultar el '+' que normalmente estaría allí para indicar que el archivo / directorio tiene una ACL asociada. Pruebe 'ls -le @ O', que enumerará xattrs, ACL (si está presente) y también cualquier indicador.
Gordon Davisson el