拡張属性が存在するかどうかを確認する方法


4

実行時

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

たまには

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

特定のXXX.appに名前付き属性が存在するかどうかをどのように確認しますか?

回答:


4

以下 xttar コマンド 属性名と対応する値の両方が表示されます(存在する場合)。

xattr -l file

また使用することができます ls コマンド

ls -@ file

それは言った、 ... No such xattr: com.apple.quarantine メッセージは致命的ではないメッセージです。つまり、メッセージを条件付きにする必要はまったくありません。 com.apple.quarantine 拡張属性 与えられたファイル内の多数のファイルから同時に ディレクトリ それから cd ターゲットへ ディレクトリ そして次のものを使う コマンド

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

上記のワンライナーは削除します com.apple.quarantine 拡張属性 それを持っているすべてのファイルをオフにして、あたかもディレクトリの内容全体が再帰的にも指定されているかのように振る舞うので(ディレクトリツリーの中のすべてのファイルが作用されるように)、 -r オプション ターゲットを持たないファイルについてはエラーを表示しない 拡張属性 。 (それこそが 2>/dev/null します。)


1

特定の拡張属性の存在をテストする直接的な方法はありません。あなたの場合は、

file=/path/to/file
attr=attribute

何かをする

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

または、ワンライナーとして

[[ $(xattr "$file") = *$attr* ]] && xattr -d $attr "$file"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.