![在终端中输出打开的 Firefox 选项卡的 URL](https://linux22.com/image/1116286/%E5%9C%A8%E7%BB%88%E7%AB%AF%E4%B8%AD%E8%BE%93%E5%87%BA%E6%89%93%E5%BC%80%E7%9A%84%20Firefox%20%E9%80%89%E9%A1%B9%E5%8D%A1%E7%9A%84%20URL.png)
我想用终端命令找出当前打开的 Firefox 选项卡的 URL。 有可能吗?
这样我就可以将它们写入文本文件并在以后查看它们;并且安全资源(我经常打开许多选项卡)。我知道 Firefox 有一个附加组件,但我更喜欢编写自己的脚本。
答案1
当前打开的 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。
答案2
该信息存储在$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";
}
}'
答案3
这需要jq
软件包,可以使用以下命令安装sudo apt-get install jq
:
jq '.windows[].tabs[].entries[].url' ~/.mozilla/firefox/xkxwaf4z.default/sessionstore-backups/recovery.js
检查路径~/.mozilla/firefox
并替换xkxwaf4z
为正确的名称。
答案4
你可以通过以下方法提取 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
。
每 15 秒 Firefox 都会在 中创建一个备份*default/sessionstore-backups/recovery.js
。