使用sed为OS X中的firefox prefs文件添加文本行

时间:2011-09-16 16:23:07

标签: macos firefox sed

我需要阻止750 Mac更新Firefox,但保留个人偏好。 因此,我必须在文件中插入一行。

使用带有sed的shell脚本,我正在努力识别要遵循的行,因为它有特殊的字符:

sed '/user_pref("accessibility.typeaheadfind.flashbar", 0); /a\
user_pref("app.update.enabled", false);\'$'\n' /Users/username/pathToFile/prefs.js

显然现在这是打印到屏幕,但稍后将写入文件。任何帮助表示赞赏。

源文件如下:

# Mozilla User Preferences

/* Do not edit this file.
*
* If you make changes to this file while the application is running,
* the changes will be overwritten when the application exits.
*
* To make a manual change to preferences, you can visit the URL about:config
* For more information, see http://www.mozilla.org/unix/customizing.html#prefs
*/

user_pref("accessibility.typeaheadfind.flashBar", 0);
user_pref("app.update.lastUpdateTime.addon-background-update-timer", 1298297884);
user_pref("app.update.lastUpdateTime.background-update-timer", 1298282703);

我需要在“user_pref”的第一个实例之后插入sed命令中前面提到的代码行作为新行,所以如果我是对的话,美元和\ n实现了这一点。

看起来代码是正确的,它应该可以工作,但不是。我在OS 10.6.8上使用bash shell。

1 个答案:

答案 0 :(得分:0)

好的,我自己解决了这个问题。愚蠢的错字:

sed '/user_pref("accessibility.typeaheadfind.flashbar", 0);/ a\

将上述内容与原始帖子进行比较,最后您会注意到在分号后需要正斜杠。

对于那些感兴趣的人,我实际上已经确定了:

useris=$(who | grep -v support | awk '{print $1}' | awk "NR==1{print;exit}")
firefoxPath=$(grep "Path=" /Users/"$useris"/Library/Application\ Support/Firefox/profiles.ini | awk -F '=' '{print $2}')

sed '/^user_pref("app.update.lastUpdateTime/ i\
user_pref("app.update.enabled", false);\'$'\n' /Users/"$useris"/Library/Application\ Support/Firefox/"$firefoxPath"/prefs.js > /Users/"$useris"/Library/Application\ Support/Firefox/"$firefoxPath"/prefs.txt

然后,您将使用您生成的新文件替换“prefs.js”文件,现在您已设法阻止Firefox浏览器提示用户进行更新。