¿Cómo verificar si existe un atributo extendido?

4

Cuando se ejecuta

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

a veces me sale

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

¿Cómo se verifica si existe algún atributo con nombre para una XXX.app determinada?

    
pregunta qazwsx 30.12.2017 - 22:09

2 respuestas

4

El siguiente comando xttar hace que se muestren los nombres de los atributos y los valores correspondientes, si existen.

xattr -l file

También puede usar el comando ls :

ls -@ file

Dicho esto, el mensaje ... No such xattr: com.apple.quarantine no es un mensaje fatal, lo que significa que no hay necesidad real de hacerlo condicional, y si su objetivo es eliminar el com.apple.quarantine atributo extendido de una muchos archivos a la vez en un directorio dado, luego cd al directorio de destino y use el siguiente comando :

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

La frase de una línea anterior eliminará el com.apple.quarantine atributo extendido de cada archivo que lo tenga y actuará como si todo el contenido del directorio también se especificara (de modo que cada archivo en el se actúa sobre el árbol de directorios), esa es la opción -r , mientras que no muestra errores para los archivos que no tienen el atributo extendido . (Eso es lo que hace 2>/dev/null ).

    
respondido por el user3439894 30.12.2017 - 22:34
1

No hay una manera directa de probar la existencia de un atributo extendido específico. En su caso usted podría, con

file=/path/to/file
attr=attribute

haz algo como

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

o, como una sola línea

[[ $(xattr "$file") = *$attr* ]] && xattr -d $attr "$file"
    
respondido por el nohillside 31.12.2017 - 00:47

Lea otras preguntas en las etiquetas