2011-09-16 80 views
1

我需要阻止750個Mac更新Firefox,但保留個人偏好。 因此我必須在文件中插入一行。使用sed將文本行添加到OS X中的firefox prefs文件中

使用與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); 

我需要插入的代碼sed命令中預先提到的「user_pref」的第一個實例後,新行線,所以美元和\ n如果我是對的,就可以實現這一點。

它看起來像代碼是正確的,它應該工作,但沒有。我在OS 10.6.8上使用了bash shell。

+0

你用'...; \'$'\ n''來表示一個'$'在行尾的意圖是什麼?並且'\ n'是爲了在文本中添加一個新線?祝你好運。 – shellter

+0

否則,這看起來不錯;你有什麼問題? – tripleee

回答

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瀏覽器從提示用戶進行更新。

相關問題