96 votes

Que signifie le @ sur la sortie de "ls" sur le terminal OS X' ?

Lorsque vous effectuez un ls dans un répertoire, j'obtiens le résultat suivant :

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

Je me demandais ce que le @ signifie.

87voto

Il indique que le fichier a des attributs étendus. Utilisez ls -l@ pour les voir.

Vous pouvez utiliser xattr pour modifier ces attributs. xattr -h vous donnera l'aide en ligne correspondante.

28voto

Brent Writes Code Points 431

De mémoire, je pense que cela a un rapport avec le fait que le fichier dispose d'attributs étendus. Voici un lien vers une discussion similaire :

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

Donc si vous voyez un fichier avec un "@" quand vous faites un ls, essayez de faire ceci :

xattr -l <filename>

Cela devrait vous montrer les attributs étendus.

Vous pouvez consulter l'aide de xattr pour plus de détails :

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)

Il semble que si vous regardez les attributs supplémentaires avec "-l" puis les supprimez avec "-d", vous obtiendrez probablement ce que vous voulez. Pratiquez d'abord dans un répertoire temporaire quelque part et assurez-vous que cela fonctionne ;)

24voto

iridian Points 379

À partir de la page de manuel ls(1) sur Mac OS 10.6.1 :

Si le fichier ou le répertoire possède des attributs étendus, le champ des permissions imprimé par l'option -l est suivi du caractère '@'. Sinon, si le fichier ou le répertoire possède des informations de sécurité étendues (comme une liste de contrôle d'accès), le champ des autorisations imprimé par l'option -l est suivi du caractère '+'.

Dans la liste des options 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.

Cela vous permettra de voir la valeur de ces options étendues. Pour info, les informations ACL peuvent être définies à l'aide du même utilitaire chmod(1) que vous connaissez probablement déjà :-)

Il ne semble pas y avoir de moyen simple, à partir de la ligne de commande, de faire quoi que ce soit avec les attributs étendus.

10voto

De la Page de manuel pour ls :

Si l'option -l est donnée, les informations suivantes sont affichées pour chaque fichier : mode de fichier, nombre de liens, nom du propriétaire, nom du groupe, nombre d'octets dans le fichier, mois abrégé, jour du mois où le fichier a été modifié pour la dernière fois, heure de la dernière modification du fichier, minute de la dernière modification du fichier, et le nom du chemin d'accès.

En outre, pour chaque répertoire dont le contenu est affiché, le nombre total de blocs de 512 octets utilisés par les fichiers du répertoire est affiché sur une ligne distincte, immédiatement avant les informations relatives aux fichiers du répertoire.

Si le fichier ou le répertoire possède des attributs étendus, le champ des permissions imprimé par l'option -l est suivi du caractère '@'. Sinon, si le fichier ou le répertoire possède des informations de sécurité étendues (telles qu'une liste de contrôle d'accès), le champ d'autorisations imprimé par l'option -l est suivi du caractère '+'.

Utilisez :

ls -la@e

pour plus d'informations sur les fichiers ou répertoires avec ces attributs/informations.

9voto

Tim Reddy Points 389

Ceci est lié aux attributs étendus et au contrôle d'accès.

De la page de manuel de sun ls :

Le caractère après les permissions est un ACL ou un indicateur d'attributs étendus. Ce caractère est un @ si les sont associés au fichier et que l'option -@ est en vigueur. Sinon, ce caractère est un signe plus (+) si une ACL non triviale est associée au fichier. non triviale est associée au fichier ou un ou un caractère espace dans le cas contraire.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X