plist 内の配列を検索して置き換えてみます。デフォルトで問題なく配列を書き込むことはできますが、配列を削除することはできません。
plist は次のとおりです。~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plisty
削除したいもの:
<dict>
<key>LSHandlerPreferredVersions</key>
<dict>
<key>LSHandlerRoleAll</key>
<string>-</string>
</dict>
<key>LSHandlerRoleAll</key>
<string>com.apple.mail</string>
<key>LSHandlerURLScheme</key>
<string>mailto</string>
</dict>
これを次のように置き換えます:
<dict>
<key>LSHandlerPreferredVersions</key>
<dict>
<key>LSHandlerRoleAll</key>
<string>-</string>
</dict>
<key>LSHandlerRoleAll</key>
<string>com.microsoft.outlook</string>
<key>LSHandlerURLScheme</key>
<string>mailto</string>
</dict>
インターネットで検索しましたが、解決策が見つかりません ;-) 誰か助けてくれませんか? ご協力をよろしくお願いします、Netzmeister
答え1
以来、プリスト通常のテキストファイルのようですが、Linuxでは1行で十分です。
sed 's/<string>com.apple.mail<\/string>/<string>com.microsoft.outlook<\/string>/g' AAA.txt
ここで、 の代わりにAAA.txt
を記述する必要がありますfilename
。
結果は標準出力 (tty
作業中の ) に表示されます。
その後、正常に動作するかどうかを確認したら、同じ行にパラメータを追加して、-i
内部のファイルを変更することができます。
sed -i 's/<string>com.apple.mail<\/string>/<string>com.microsoft.outlook<\/string>/g' AAA.txt
さらに説明:
sed -i 's/OLD/NEW/g' NameOfYourFile
上記のコマンドは、ファイル内で
NameOfYourFile
文字列のすべての出現を検索しOLD
、それを文字列に置き換えますNEW
。あなたは正しく識別する必要がありますキーワード置換したい 、この場合はタグが含まれます:
<string>com.apple.mail</string>
。
があるため、前/
に で保護する必要があり\
、キーワードは になります<string>com.apple.mail<\/string>
。(2 番目の文字列にも同じロジックを適用する必要があります)。- パラメータは、
-i
結果を画面に表示せずにファイル内の文字列を置き換えます。このため、事前にパラメータなしで試してみることをお勧めします。 - その下で
BSD
は、パラメータの順序、sed ... -i
同じではない可能性がありsed -i ...
、見つかったエラーが発生します。 sudo
最初に追加する必要があるかもしれませんルート権限、またはそのコマンドをルートシェル通常のユーザーとしてそのファイルを変更することが許可されていない場合は、 を使用します ( で確認できますls -l NameOfYourFile
)。
ノート
からman sed
-私[サフィックス]、- 所定の位置に[=接尾辞]
edit files in place (makes backup if SUFFIX supplied)