我正在尝试自动为 Safari 添加有关 Java 的否则被阻止的应用程序和站点的白名单。我能够导出二进制 plist 并通过 bash 对其进行编辑,但我被困在如何搜索和替换或简单地添加到具有特定位置的文件中。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BookmarksSidebarWidth</key>
<real>194</real>
...
<key>WhitelistedBlockedPlugins</key>
<array>
<dict>
<key>PluginHostname</key>
<string>www.java.com</string>
<key>PluginIdentifier</key>
<string>com.oracle.java.JavaAppletPlugin</string>
<key>PluginLastVisitedDate</key>
<date>2013-06-05T17:03:26Z</date>
<key>PluginName</key>
<string>Java Applet Plug-in</string>
<key>PluginPageURL</key>
<string>http://www.java.com/en/download/testjava.jsp</string>
<key>PluginPolicy</key>
<string>PluginPolicyBlockWhenInsecure</string>
</dict>
</array>
...
<key>com.apple.Safari.ContentPageGroupIdentifier.WebKit2UsesPageCache</key>
<true/>
</dict>
</plist>
这
<key>WhitelistedBlockedPlugins</key>
<array>
<dict>
....
....
</dict>
</array>
是我想搜索和替换或添加的位(如果它不存在)。如果存在,则可以替换以 the 开头<key>WhitelistedBlockedPlugins</key>
并以结尾结尾的所有内容</array>
,因为无论如何我们都希望控制其中的内容。
如果它不存在,我想我可以</dict>
在文件末尾的 final 之前添加它。
这是我想出的逻辑,但是我很难找到可以搜索的解决方案,如果找到则替换,如果找不到则添加。
在阅读 Stack Overflow 上的类似帖子后,我尝试了一些没有成功的事情。我愿意使用任何 OSX 原生的东西,包括 XCode/CLI 工具附带的东西。
我尝试过的事情:
echo
进入文件工作,但我不知道如何做之前</dict>
,我只想这样做,如果<key>WhitelistedBlockedPlugins</key>
和相应的数组无处可寻。有人有任何指导或解决方案吗?谢谢