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