Answers:
打开的Firefox选项卡的当前打开的URL存储在sessionstore.js
文件中,该文件位于$HOME/.mozilla/firefox/XXXXXXXX.default
目录中的某个位置。
因此,您可以从以下内容开始:
cat $HOME/.mozilla/firefox/*default/sessionstore.js | sed "s/{/\n/g" | egrep -o '"url".*"scroll"' | cut -d\" -f4
使用cat
我们可以显示文件,并与帮助sed
,egrep
而cut
我们只选择从该文件打开Firefox的标签的URL。
sessionstore.js
文件的内容,然后"
用\n
(换行符)替换出现的内容,然后仅过滤出包含http
或的行https
。尝试显示文件,您将知道为什么需要换行符:)
sessionstore.js
,不仅有打开的选项卡的地址。还有许多其他地址。
sessionstore.js
Firefox 的文件。问题在于该文件众所周知会丢失制表符。我想要的是一种并行解决方案,询问Firefox的选项卡是什么。就像在AppleScript中一样。
该信息存储在$ HOME / .mozilla / firefox / * default / sessionstore.js中,其格式为json。
以下示例适用于PHP。它遍历所有Firefox窗口,所有选项卡并获取相关信息,该信息是“条目”内部的最后一个条目。如果我们可以使用xpath来解析它,它将类似于:/ windows / * / tabs / last()/ url(我的xpath知识是生锈的)。
您可以将此代码复制/粘贴到终端:
cat $HOME/.mozilla/firefox/*default/sessionstore.js | php -r '
$json=json_decode(fgets(STDIN), TRUE);
foreach($json["windows"] as $w)
foreach($w["tabs"] as $t)
echo end($t["entries"])["url"]."\n";'
编辑:与perl(但首先,sudo apt-get install libjson-pp-perl):
cat $HOME/.mozilla/firefox/*default/sessionstore.js | perl -e '
use JSON qw( decode_json );
my $json = decode_json(<STDIN>);
foreach my $w ( @{$json->{"windows"}} ) {
foreach my $t ( @{$w->{"tabs"}} ) {
print $t->{"entries"}[-1]->{"url"}."\n";
}
}'
sessionstore.js
Firefox 的文件。问题在于该文件众所周知会丢失制表符。我想要的是一种并行解决方案,询问Firefox的选项卡是什么。就像在AppleScript中一样。
recovery.js
用-9个窗口和840个选项卡测试了-file的两种方法,它们的工作原理就像一个魅力!-刚过管道输出到一个文本文件,我不得不设置的字符映射到ISO-8859-15的的文件Perl的方法 ...!
这是在Firefox中提取最前面/活动选项卡的当前URL的方式:
cat recovery.js | php -r '$json=json_decode(fgets(STDIN), TRUE); $tindex = $json["windows"][0]["selected"]-1; $eindex = $json["windows"][0]["tabs"][$tindex]["index"]-1; echo $json["windows"][0]["tabs"][$tindex]["entries"][$eindex]["url"];'
说明:首先,它找到活动选项卡$tindex
的索引,然后找到此选项卡中活动历史记录条目的索引$eindex
。
Firefox每15秒在中创建一个备份*default/sessionstore-backups/recovery.js
。
使用bash我找到了以下答案。它只需要包装:jq。可以使用以下命令安装:apt-get install jq
jq '.windows[].tabs[].entries[].url' ~/.mozilla/firefox/xkxwaf4z.default/sessionstore-backups/recovery.js
egrep
模式需要双引号zsh
。除此之外,还有个不错的提示,谢谢:)