如何使用脚本向 Firefox 的profiles.ini 添加新的配置文件条目?

如何使用脚本向 Firefox 的profiles.ini 添加新的配置文件条目?

Firefox 使用名为 的文本文件~/.mozilla/firefox/profiles.ini来保存配置文件列表。这些条目看起来类似于:

[Profile0]
Name=default
IsRelative=1
Path=default
Default=1

...

[Profile8]
Name=guest
IsRelative=1
Path=guest

我需要添加一个新条目来profiles.ini使用 bash 脚本。问题是配置文件需要按顺序编号,而且我事先不知道每个用户有多少个配置文件。在上面的示例中,我需要添加 [Profile9]。相反,如果我添加 [Profile8] 或 [Profile10] 或任何其他数字,它将无法正常工作。

我的脚本如何找出当前正在使用的最高配置文件编号,然后增加该编号并附加一个新的配置文件profiles.ini

我已经在 a 中使用了类似的东西for-loop,但我不知道如何得到$NewNumber

echo "[Profile$NewNumber]
Name=NewProfile
IsRelative=1
Path=NewPath" >> /home/$myuser/.mozilla/firefox/profiles.ini

答案1

最简单的方法:

/usr/bin/firefox -CreateProfile profileName 

它将维护profiles.ini文件中的配置文件并创建一个新的配置文件(profileName在本例中)。

答案2

也许使用 awk 提取“[Profile]”行,然后处理掉“[Profile ... ]”位,然后按数字对结果进行排序,仅保留最后一个(最高的):

highest=$(awk '/^\[Profile[0-9]+\]$/ { s=substr($0, 9); sub("]","", s); print s}' < /home/$myuser/.mozilla/firefox/profiles.ini |sort -n | tail -1)
highest=$((highest + 1))
printf "[Profile%d]
Name=NewProfile
IsRelative=1
Path=NewPath" "$highest" >> /home/$myuser/.mozilla/firefox/profiles.ini

答案3

为什么不采取全面的awk方法呢?

awk '
/Profile[0-9]+/ {PRNR = $0
                 gsub (/[^0-9]/, "", PRNR)
                }
1
END             {print ""
                 print "[Profile" ++PRNR "]"
                 print "Name=NewProfile"
                 print "IsRelative=1"
                 print "Path=NewPath >> /home/$myuser/.mozilla/firefox/profiles.ini"
                }
' profiles.ini

相关内容