我最近不小心把 Ubuntu 中的主分区填满了。在我意识到发生了什么之前,我重新启动了 Firefox,因为它的行为很奇怪(这是可以理解的)。
现在,当我使用配置文件管理器(使用 -p)启动 Firefox 时,它不会列出任何现有的配置文件。我检查了一下,所有配置文件文件夹都还在,但我的 Profiles.ini 文件基本上是空的。我推测它是在分区已满时意外被清空的。
我尝试删除profiles.ini,但它只是重新生成为空。是否可以根据现有的配置文件文件夹重新生成我的profiles.ini,或者我是否必须手动重建它(mozilla 文档显示了格式,因此看起来不太难,我只是在寻找偷懒的选项)。
答案1
一些 Bash 爱好者;随便你叫什么名字。我使用了 thescript.sh
#!/bin/bash
echo '[General]'
echo 'StartWithLastProfile=1'
echo ''
n=0
for file in * ; do
if [[ -d "$file" ]] ; then
if [[ "$file" =~ .+\.(.+) ]] ; then
echo "[Profile${n}]"
echo "Name=${BASH_REMATCH[1]}"
echo "IsRelative=1"
echo "Path=${file}"
if [[ "${BASH_REMATCH[1]}" == default ]] ; then
echo "Default=1"
fi
echo ""
let n++
fi
fi
done
用法
首先,将其放在您的 mozilla 配置文件目录中(例如对我来说是 ~/.mozilla/firefox)。
chmod +x thescript.sh
./thescript.sh
./thescript.sh > profiles.ini
输出
nex@Computer:~/.mozilla/firefox
$ ./thescript.sh
[General]
StartWithLastProfile=1
[Profile0]
Name=default
IsRelative=1
Path=03k202kd.default
Default=1
[Profile1]
Name=test
IsRelative=1
Path=a023lkdl.test
nex@Computer:~/.mozilla/firefox
$ ./thescript.sh > profiles.ini
答案2
我在谷歌上找不到任何东西所以我写了一个 perl 脚本:
#!/usr/bin/perl
use strict;
use warnings;
my $dir = glob($ARGV[0] || '~/.mozilla/firefox/');
chdir $dir or die "Unable to change to dir $dir: $!";
opendir my $dh, $dir or die "Unable to open dir $dir: $!";
my @dirs = grep { /^[^.]/ && -d $_ } readdir $dh;
# print some boilerplate
print <<'START';
[General]
StartWithLastProfile=0
START
# try to sort by oldest first (uses a schwartzian transform)
# the 'chrome' folder in each profile folder seems to be the oldest file per profile generally
@dirs = reverse
map { $_->[0] }
sort { $a->[1] <=> $b->[1] || $a->[0] cmp $b->[0] }
map { [ $_, -C "$_/chrome" ] }
grep { -e "$_/chrome" } @dirs;
my $i = 0;
foreach my $profile_dir (@dirs) {
# folder names are usually of the form zyxwabc.My Profile Name
my ($name) = $profile_dir =~ /^[^.]+\.(.*)/;
next if ! $name;
print <<"PROFILE";
[Profile$i]
Name=$name
IsRelative=1
Path=$profile_dir
PROFILE
$i++;
}