Bisakah saya melihat riwayat Firefox dengan terminal?

29

Apakah ada perintah untuk menampilkan riwayat Firefox dari Terminal?

tanpa perlu Masukkan riwayat Firefox secara grafis.

nux
sumber
Bisakah Anda menambahkan alasan ingin melakukannya?
Mengapa Anda tidak ingin menggunakan Firefox itu sendiri?
1
@ user25656: Jika Anda ingin cepat, gunakan baris perintah. Anda dapat melakukan statistik dari itu. Anda dapat mencari dengan ekspresi reguler (mis. Menggunakan grep), Anda dapat membuat grafik, dll. Segala sesuatu yang tidak mungkin di dalam firefox. Setidaknya tidak tanpa meretas addon.
erik

Jawaban:

28

Halaman ini menjelaskan informasi spesifik pengguna apa yang disimpan oleh Firefox dan di mana. (Dan inilah yang dikatakan bantuan Mozilla saat melihat file .sqlite.)

Ini mencantumkan tiga jenis sejarah:

  • Bookmark dan Riwayat Penjelajahan: File places.sqlite berisi semua bookmark Firefox Anda dan daftar semua situs web yang Anda kunjungi ...

  • Riwayat pelengkapan otomatis: File formhistory.sqlite mengingat apa yang Anda cari di bilah pencarian Firefox dan informasi apa yang Anda masukkan ke dalam formulir di situs web ...

  • Riwayat unduhan: File unduhan .sqlite mengingat apa yang telah Anda unduh. ...

Seperti yang Anda lihat, ketiga histori bukanlah file teks sederhana tetapi file database dalam sqliteformat.

Salah satu cara untuk melihat .sqlitefile adalah dengan menggunakan sqlite3( sudo apt-get install sqlite3).

Buka terminal dan cdke folder yang berisi apa yang ingin Anda lihat. Dalam kasus saya, itu ~/.mozilla/firefox/w4wcp85s.default.

ls *.sqlite daftar file sqlite.

Jalankan sqlite3 places.sqlite(jika places.sqlite adalah apa yang ingin Anda lihat). Anda akan melihat sesuatu seperti ini:

$ 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> 

Sekarang, ada beberapa hal yang dapat Anda lakukan. (Gunakan Ctrl+ Duntuk keluar dari sqlite3).

Misalnya, mengetik .tablesdan menekan Entermemberi saya:

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> 

Untuk melihat konten, ketik SELECT * FROM table_name;(di mana table_nameadalah nama tabel yang ingin Anda lihat; perhatikan ;) dan tekan Enter. Sangat mungkin bahwa output tidak akan bisa dimengerti tetapi itu bukan kesalahan sqlite3.

Untuk menunjukkan kepada Anda contoh yang memang memberikan output yang layak, lihat stylish.sqlite(jika Anda menggunakan ekstensi 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}

Anda dapat melakukan semuanya hanya dalam satu perintah non-interaktif jika Anda tahu persis apa yang Anda inginkan. Baca alat baris perintah sqlite3 untuk lebih lanjut tentang sqlite3.

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

akan melakukan yg diperlukan dalam contoh yang diberikan dan teeakan membiarkan Anda melihat output di layar juga:

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

(Terima kasih sudah di sini .)

Komunitas
sumber
Jika Anda ingin mencari semua basis data dan semua tabel di basis data itu untuk istilah tertentu (mis. Stackoverflow.com ), Anda bisa melakukannya (sebagai satu-liner): 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'Atau alih-alih grepmenggunakan lessdan mencari di dalam hasil.
erik
Sesuatu seperti ini hanya akan memulai akhir dari saya ~/.bash_history, jadi saya menulis skrip Python (3,5+) menggunakan perpustakaan Klik untuk membuat daftar dasar, menyortir, dan memfilter lebih mudah. Anda bisa mendapatkannya dari Intisari ini . Silakan tinggalkan komentar di sana jika Anda mengalami masalah.
TheDudeAbides
6

Inilah yang akhirnya saya terima (terima kasih atas jawaban sebelumnya):

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
sumber
1
Sebenarnya solusi yang paling berguna copy-paste-non-verbose. Terima kasih.
vmassuchetto
Jika Anda memiliki beberapa profil Firefox, Anda perlu menambahkan | head -1ke findperintah.
mivk
3

Di Xubuntu 13.10 saya aktif

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

Atau kamu bisa

find / -name 'places.sqlite

Karena ini adalah file * .sqlite , Anda dapat menginstal plugin vim ini dan menggunakan vim , mencari cara untuk membuka file sqlite dari terminal. Informasi lebih lanjut dapat ditemukan di sini .

Lynob
sumber
1
~/.mozilla/firefox/*.default/places.sqliteharus bekerja
mchid