Bash:获取当前的浏览器选项卡

时间:2013-11-24 18:26:49

标签: bash shell google-chrome firefox browser

有没有办法使用bash在浏览器(至少是firefox)中获取当前打开的选项卡。 换句话说,从文件浏览器中调用bash脚本的选项卡的URL(包含在该页面中)

2 个答案:

答案 0 :(得分:1)

Firefox改变了在第33版硬盘上存储网址的方式。

我写了这个php脚本来搜索打开的标签。我使用php,所以你需要安装php5-cli(或更新版)的软件包。

您需要调整$ displayOnlyLastActiveUrl以满足您的需求:设置为false以显示所有已打开的URL,对于上一个活动的已打开URL,则为true

脚本可能需要改进,但它符合我的需要。

已知限制:

    如果你在firefox中设置了多个配置文件,
  • migth不会查看好的配置文件。

  • 最多可能需要10秒才能更新

  • 如果您选择输出所有网址,则可能会显示一些已关闭的标签

只需创建一个包含上述内容的php文件,然后在shell中使用php yourfile.php

运行它
<?php
//
// Display curent opened URLs in firefox.
// Author: Julien Marin (malinuxtele[AT]tuxfamily[DOT]org)
// Licence: GPL 3
//

$displayOnlyLastActiveUrl=true; //set to false to display all opened url, true for last active opened URL

//Search for restore.js (might need to be improved for multiprofiles environement...)
if (!$profileIniContents=fopen(getenv("HOME")."/.mozilla/firefox/profiles.ini", "r")) trigger_error("unable to open profiles file", E_USER_ERROR);
$profile="";
$ar_match=array();
while ($ligne=fgets($profileIniContents))
    if (preg_match("/Path=([^.]*)[.]default/", $ligne, $ar_match))
        $profile=$ar_match[1];

//Open recovery.js file
if(! $recoveryFileHandle=fopen(getenv("HOME")."/.mozilla/firefox/$profile.default/sessionstore-backups/recovery.js", "r")) trigger_error("unable to open recovery.js file", E_USER_ERROR);
$recoveryData=json_decode(fread($recoveryFileHandle, 4000000), true);

//parse data
$ar_tabs=array();
foreach ($recoveryData["windows"] as $actWindow)
    foreach ($actWindow["tabs"] as $actTabGroup)
    {
        $lastAccess=$actTabGroup["lastAccessed"];
        foreach ($actTabGroup["entries"] as $actTabEntry)
            if(!$displayOnlyLastActiveUrl) echo($actTabEntry["url"]."\n");
            else $ar_tabs[$lastAccess]=$actTabEntry["url"];

    }

//search last URL
if ($displayOnlyLastActiveUrl)
{
    ksort($ar_tabs);
    echo array_pop($ar_tabs);
}

?>

答案 1 :(得分:-3)

我偶然发现了这个:

#!/bin/bash
for var in "$@" 
do
    #
    #
done

$ @包含标签的网址。