터미널에서 열린 파이어 폭스 탭의 출력 URL


17

터미널 명령으로 현재 열려있는 파이어 폭스 탭의 URL을 찾고 싶습니다. 가능성이 있습니까?

이 방법으로 텍스트 파일에 작성하고 나중에 볼 수 있습니다. 안전한 자원 (열린 탭이 많이 있습니다). 파이어 폭스 용 애드온이 있다는 것을 알고 있지만 내 스크립트를 작성하는 것이 더 편할 것입니다.

답변:


8

열린 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우리는 그 파일에서 열린 파이어 폭스 탭의 URL을 선택합니다.


egrep패턴에 큰 따옴표가 필요합니다 zsh. 그 외에, 좋은 팁, 감사합니다 :)
moon.musick

1
이 명령의 작동 방식을 몇 마디로 설명 하시겠습니까? 내가 얻는 것처럼 : sessionstore.js의 내용을 가져 와서 \ "를 \ n으로 바꾸는 작업으로 파이프하고 http로 시작하는 모든 줄을 가져 오는 작업으로 파이프하십시오. 맞습니까? \ "를 바꾸시겠습니까?
aldorado

1
@aldorado 그것의 내용이 표시 sessionstore.js다음의 발행 수를 대체, 파일 "\n포함 된 전용 라인을 필터링 한 후 (줄 바꿈) 및 http또는 https. 파일을 표시하면 개행이 필요한 이유를 알 수 있습니다. :)
moon.musick

2
파일 sessionstore.js에는 열린 탭의 주소 만이 없습니다. 다른 많은 주소가 있습니다.
Nicolas Barbulesco

1
이 답변은 sessionstore.jsFirefox 파일 을 사용합니다 . 문제는이 파일이 악명 높은 탭을 잃어버린다는 것입니다. 여기서 내가 원하는 것은 Firefox의 탭이 무엇인지 묻는 병렬 솔루션입니다. AppleScript처럼.
Nicolas Barbulesco

5

이 정보는 $ HOME / .mozilla / firefox / * default / sessionstore.js에 저장되며 형식은 json입니다.

다음 예제는 PHP에서 작동하도록 만들어졌습니다. 모든 파이어 폭스 창, 모든 탭을 걷고 "항목"의 마지막 항목 인 관련 정보를 얻습니다. xpath를 사용하여 구문 분석 할 수 있다면 / windows / * / tabs / last () / url과 같습니다.

이 코드를 터미널에 복사 / 붙여 넣기 할 수 있습니다.

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.jsFirefox 파일 을 사용합니다 . 문제는이 파일이 악명 높은 탭을 잃어버린다는 것입니다. 여기서 내가 원하는 것은 Firefox의 탭이 무엇인지 묻는 병렬 솔루션입니다. AppleScript처럼.
Nicolas Barbulesco

"탭을 잃었다"는 무슨 뜻입니까? 현재 5 개의 탭이있는 Firefox를 실행 중이며이 스크립트를 실행할 때이 5 개의 탭이 표시됩니다. 이 솔루션은 모든 창과 각 창의 모든 탭을 안내합니다.
Hugo Vieira

나는 이것을 의미 한다 .
Nicolas Barbulesco

aldorado : (...) 님이 게시 한 질문은 현재 열려있는 파이어 폭스 탭 (...)의 URL을 찾습니다. 파이어 폭스를 종료 한 후 저장된 탭을 나열하는 것에 대해 이야기하고 있습니다. 또한 그 버그는 그 악명 높은 것으로 보이지 않습니다 ...
Hugo Vieira

1
recovery.js9 개의 창과 840 개의 탭이 있는 -file의 두 가지 방법을 모두 테스트 했으며 매력처럼 작동했습니다! - 출력 을 텍스트 파일로 파이프 한 직후 에 perl-method 파일에 대해 문자 맵ISO-8859-15 로 설정해야했습니다 ...!
DJCrashdummy

0

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.


1
이 기능을 사용하려면 php5-cli를 설치해야 개선에 대한 답변에 추가 할 수 있습니다. 가장 앞면뿐만 아니라 모든 탭 URL을 잡는 방법이 있습니까? OP가 묻는 것처럼.
damien

질문과 답변이 일치하지 않는 것으로 알고 있지만 답변에서 정보를 찾으려면 Google에서 여기로 안내합니다.
Lenar Hoyt

0

bash를 사용하여 다음 답변을 찾았습니다. jq 패키지 만 필요합니다. 다음과 같이 설치할 수 있습니다 : apt-get install jq

jq '.windows[].tabs[].entries[].url' ~/.mozilla/firefox/xkxwaf4z.default/sessionstore-backups/recovery.js

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.