Come verificare se esiste un attributo esteso?

4

Durante l'esecuzione

 xattr -d com.apple.quarantine /Applications/XXX.app

a volte mi capita

 xattr: /Applications/XXX.app: No such xattr: com.apple.quarantine

Come si verifica se esiste un attributo con nome per un dato XXX.app?

    
posta qazwsx 30.12.2017 - 22:09
fonte

2 risposte

4

Il seguente comando xttar comando fa sì che vengano visualizzati sia i nomi degli attributi che i valori corrispondenti, se presenti.

xattr -l file

Puoi anche usare il ls comando :

ls -@ file

Detto questo, il messaggio ... No such xattr: com.apple.quarantine è un messaggio non fatale, il che significa che non è necessario renderlo condizionale e se il tuo obiettivo è rimuovere l'attributo esteso com.apple.quarantine esteso da un molti file contemporaneamente in una determinata directory , quindi cd nella directory di destinazione e utilizzare il seguente comando :

for f in *; do xattr -dr com.apple.quarantine "$f" 2>/dev/null; done

Il precedente one-liner eliminerà il com.apple.quarantine attributo esteso da ogni file che lo ha e agirà come se fosse specificato anche l'intero contenuto della directory in modo ricorsivo (in modo che ogni file nel l'albero delle directory è attivo), questo è l'opzione -r , mentre non mostra errori per i file che non hanno l'attributo esteso di destinazione. (Questo è ciò che fa il 2>/dev/null .)

    
risposta data 30.12.2017 - 22:34
fonte
1

Non esiste un modo diretto per verificare l'esistenza di uno specifico attributo esteso. Nel tuo caso potresti, con

file=/path/to/file
attr=attribute

fai qualcosa di simile

if [[ $(xattr "$file") = *$attr* ]]; then
    xattr -d $attr "$file"
fi

o, come one-liner

[[ $(xattr "$file") = *$attr* ]] && xattr -d $attr "$file"
    
risposta data 31.12.2017 - 00:47
fonte

Leggi altre domande sui tag