Могу ли я просматривать историю Firefox с помощью терминала?

29

Есть ли команда для отображения истории Firefox из Терминала?

без необходимости вводить историю Firefox графически.

Nux
источник
Не могли бы вы добавить причину желания сделать это?
Почему вы не хотите использовать сам Firefox?
1
@ user25656: Если вы хотите быть быстрым, используйте командную строку. Вы можете сделать статистику из этого. Вы можете искать с помощью регулярных выражений (например, используя grep), вы можете создавать графики и т. Д. Все, что невозможно внутри Firefox. По крайней мере, не взломав аддон.
Erik

Ответы:

28

На этой странице описывается, какая специфичная для пользователя информация хранится в Firefox и где. это то, что говорит помощь Mozilla при просмотре файлов .sqlite.)

В нем перечислены три типа истории:

  • Закладки и история просмотра: файл place.sqlite содержит все ваши закладки Firefox и список всех посещенных вами веб-сайтов ...

  • История автозаполнения: файл formhistory.sqlite запоминает, что вы искали в панели поиска Firefox, и какую информацию вы вводили в формы на веб-сайтах ...

  • История загрузок: файл downloads.sqlite запоминает то, что вы скачали. ...

Как видите, все три истории - это не простые текстовые файлы, а файлы базы данных в sqliteформате.

Один из способов просмотра .sqliteфайлов - использование sqlite3( sudo apt-get install sqlite3).

Откройте терминал и cdв папку, содержащую то, что вы хотите просмотреть. В моем случае это так ~/.mozilla/firefox/w4wcp85s.default.

ls *.sqlite перечисляет файлы sqlite.

Запустите sqlite3 places.sqlite(если вы хотите просмотреть места.sqlite). Вы увидите что-то вроде этого:

$ cd ~/.mozilla/firefox/w4wcp85s.default 
$ sqlite3 places.sqlite
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> 

Теперь есть несколько вещей, которые вы можете сделать. (Используйте Ctrl+ Dдля выхода из sqlite3).

Например, набор текста .tablesи нажатие Enterдает мне:

sqlite> .tables
moz_anno_attributes  moz_favicons         moz_items_annos    
moz_annos            moz_historyvisits    moz_keywords       
moz_bookmarks        moz_hosts            moz_places         
moz_bookmarks_roots  moz_inputhistory   
sqlite> 

Чтобы просмотреть содержимое, введите SELECT * FROM table_name;(где table_nameуказано название таблицы, которую вы хотите просмотреть; запишите ;) и нажмите Enter. Вполне вероятно, что вывод не будет понятным, но это не ошибка sqlite3.

Чтобы показать вам пример, который обеспечивает приличный вывод, посмотрите stylish.sqlite(если вы используете расширение Stylish ):

$ ~/.mozilla/firefox/w4wcp85s.default $ sqlite3 stylish.sqlite
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
style_meta  styles    
sqlite> SELECT * FROM styles;
6||||YouTube|/* AGENT_SHEET */ 
/* ▓▓ NIGHTSHIFT - eye care:                                 ▓▓
   ▓▓_http://userstyles.org/styles/18192/nightshift-eye-care_▓▓ */

@namespace url(http://www.w3.org/1999/xhtml);
@-moz-document regexp("https?://www.youtube.com/.*")  {
body,html {min-height: 100%!important; }
html, body{background-color:#111!important}

Вы можете сделать все в одной неинтерактивной команде, если точно знаете, чего хотите. Прочтите инструмент командной строки sqlite3, чтобы узнать больше о sqlite3.

$ sqlite3 stylish.sqlite "SELECT * FROM styles;" > ~/Desktop/filename.txt 

сделаем все необходимое в приведенном примере и teeтакже увидим вывод на экране:

$ sqlite3 stylish.sqlite "SELECT * FROM styles;" | tee ~/Desktop/filename.txt 

(Спасибо за здесь .)

Сообщество
источник
Если вы хотите выполнить поиск по всем базам данных и всем таблицам в этих базах данных по определенному термину (например, stackoverflow.com ), вы можете просто сделать (в виде одной строки): for DATABASE in *sqlite; do echo -e "********\n$DATABASE\n********";for TABLE in $(sqlite3 $DATABASE ".tables"); do echo -e "========\n$TABLE\n========"; sqlite3 $DATABASE "select * from $TABLE;"; done; done | grep 'stackoverflow\.com'Или вместо grepиспользования lessи искать внутри результатов.
Erik
Нечто подобное просто собирается закончиться ~/.bash_history, поэтому я написал скрипт на Python (3.5+), используя библиотеку Click, чтобы упростить базовый листинг, сортировку и фильтрацию. Вы можете получить это из этого Gist . Пожалуйста, оставляйте комментарии там, если у вас возникнут проблемы.
TheDudeAbides
6

Вот чем я закончил (благодаря предыдущим ответам):

db=$(find "${HOME}/.mozilla/firefox/" -name "places.sqlite")
query="select p.url from moz_historyvisits as h, moz_places as p where substr(h.visit_date, 0, 11) >= strftime('%s', date('now')) and p.id == h.place_id order by h.visit_date;"
todays_urls=$(sqlite3 "${db}" "${query}")
echo "${todays_urls}" > todays_urls
pawamoy
источник
1
На самом деле самое полезное решение - копировать, вставить, не многословно. Спасибо.
vmassuchetto
Если у вас есть несколько профилей Firefox, вам нужно добавить | head -1в findкоманду.
Mivk
3

На моем Xubuntu 13.10 он включен

/home/myusername/.mozilla/firefox/nod2ejl8.default/places.sqlite

Или ты мог

find / -name 'places.sqlite

Так как это файл * .sqlite , вы можете установить этот плагин vim и использовать vim , найти способ открыть файл sqlite из терминала. Более подробную информацию можно найти здесь .

Lynob
источник
1
~/.mozilla/firefox/*.default/places.sqliteдолжен работать
mchid