Cosa significa @ sull'output di "ls" sul terminale OS X '?


81

Quando eseguo un lsin una directory ottengo il seguente 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

Mi chiedevo che cosa @significasse.



1
xattr -r -d com.apple.TextEncoding *probabilmente lo rimuoverà se è un file di testo, come un'intestazione C ++ o un file sorgente, creato localmente. Se lo hai scaricato, xattr -r -d com.apple.quarantine *probabilmente lo rimuoverai, quindi puoi fare cose come modificare un Makefile. Per qualche motivo, Apple non consente di modificare un Makefile, ma non consente di eseguire un Makefile, con com.apple.quarantine. Vai a capire ...
jww

Risposte:


75

Indica che il file ha attributi estesi. Usa ls -l@per vederli.

È possibile utilizzare xattrper modificare questi attributi. xattr -hti darà l'aiuto in linea per questo.


8
Grazie. trovato com.apple.quarantine, ecco cos'è e come
gestirlo per

24

In cima alla mia testa, penso che abbia qualcosa a che fare con il file con attributi estesi disponibili. Ecco un link a una discussione simile:

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

Quindi se vedi un file con "@" quando fai una ls, prova a fare questo:

xattr -l <filename>

Questo dovrebbe mostrare gli attributi estesi.

Puoi consultare la guida di xattr per maggiori dettagli:

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)

Sembra che se guardi gli attributi extra con "-l" e poi li rimuova con "-d" probabilmente farà quello che vuoi. Pratica questo in una directory temporanea da qualche parte prima e assicurati che funzioni;)


Molte grazie! Sembrerebbe che la directory in questione sia stata contrassegnata come com.apple.quarantine, che è una misura di sicurezza per proteggere da script e app dannosi dalla rete. Ciò non può causare il problema della directory non elencata. : / Mi guarderò intorno e pubblicherò la soluzione se la trovo.

20

Dalla pagina man ls (1) su Mac OS 10.6.1:

Se il file o la directory ha attributi estesi, il campo delle autorizzazioni stampato dall'opzione -l è seguito da un carattere '@'. Altrimenti, se il file o la directory ha esteso le informazioni di sicurezza (come un elenco di controllo di accesso), il campo delle autorizzazioni stampato dall'opzione -l è seguito da un carattere '+'.

Dall'elenco delle opzioni disponibili:

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

Questi ti faranno vedere il valore di quelle opzioni estese. FWIW, le informazioni ACL possono essere impostate usando la stessa utility chmod (1) di cui probabilmente siete già a conoscenza. :-)

Non sembra esserci un modo semplice dalla riga di comando per fare qualsiasi cosa con attributi estesi.


2
Gli attributi estesi possono essere visualizzati e manipolati con il comando xattr (disponibile solo in OS X v10.5 e .6). Non sembra avere una pagina man, ma xattr -hstamperà il suo aiuto interno.
Gordon Davisson,

xattrora ha una pagina man ed è possibile utilizzare xattr -l fileper elencare tutti gli attributi o xattr -p attribute_name fileper stampare un attributo specifico.
Lri,

9

Dalla pagina man di ls :

Se viene fornita l'opzione -l, per ogni file vengono visualizzate le seguenti informazioni: modalità file, numero di collegamenti, nome del proprietario, nome del gruppo, numero di byte nel file, mese abbreviato, file del giorno del mese è stato modificato l'ultima volta, ultima ora del file, ultima modifica del file e nome percorso.

Inoltre, per ogni directory i cui contenuti sono visualizzati, il numero totale di blocchi da 512 byte utilizzati dai file nella directory viene visualizzato su una riga da solo, immediatamente prima delle informazioni per i file nella directory.

Se il file o la directory ha attributi estesi, il campo delle autorizzazioni stampato dall'opzione -l è seguito da un carattere '@'. Altrimenti, se il file o la directory ha esteso le informazioni di sicurezza (come un elenco di controllo degli accessi), il campo delle autorizzazioni stampato dall'opzione -l viene seguito seguito da un carattere '+'.

Uso:

ls -la@e

per ulteriori informazioni su file o directory con tali attributi / informazioni.


8

Ciò è legato ad attributi estesi e controllo degli accessi.

Dalla pagina man di sun ls :

Il carattere dopo le autorizzazioni è un ACL o un indicatore di attributi estesi. Questo carattere è @ se al file sono associati attributi estesi e l'opzione - @ è attiva. Altrimenti, questo carattere è un segno più (+) se un ACL non banale è associato al file o uno spazio se non lo è.


7

"@" Indica che al file sono associati "attributi estesi".

Se fai " ls -@ -l", puoi vedere quali attributi ci sono per ogni file. Puoi anche fare qualcosa come " xattr -l pgsql.so" per scaricare gli attributi per un determinato file.

In genere sono cose come FinderInfo della vecchia scuola, informazioni di codifica di testo o informazioni di "quarantena" che ti danno il "Questo file è stato scaricato dal web, sei sicuro di volerlo aprire?" avvertimento.


1
Gli attributi estesi non sono univoci per la piattaforma mac. Numerosi sistemi operativi supportano questa funzionalità a livello di file.
Stefan Kendall,

@iftrue: alla fine è una funzionalità del file system.
Joey,

6

Dalla pagina man dils :

Il formato lungo
[…] Se il file o la directory ha attributi estesi, il campo delle autorizzazioni stampato -ldall'opzione è seguito da un @carattere ' '. [...]


2
Nota che '@' può anche nascondere '+' che normalmente sarebbe lì per indicare che al file / directory è associato un ACL. Prova 'ls -le @ O' - che elencherà xattrs, ACL (se presente) e anche qualsiasi flag.
Gordon Davisson,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.