问题描述
我想使用终端命令找出当前打开的 Firefox 选项卡的 URL。有没有可能?
这样我就可以将它们写入文本文件并稍后查看;和安全的资源(我经常打开很多标签)。 \n我知道 firefox 有一个 add-on,但我会更舒服地编写自己的脚本。
最佳思路
当前打开的 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。
次佳思路
该信息存储在$HOME/.mozilla/firefox/*default/sessionstore.js
中,其格式为json。
以下示例是为使用 PHP 而制作的。它遍历所有 Firefox 窗口、所有选项卡并获取相关信息,即 “entries” 内的最后一个条目。
如果我们可以使用 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";
}
}'