"To było gdzieś w zakładkach, coś z gnome w nazwie, a w tytule były gwiazdki."
Znasz to? Standardowy manager zakładek firefox'a jest fajny, ale nie potrafi wyszukiwać więcej niż jednego warunku. Na szczęście baza to SQLite i przy odrobinie trudu ładnie się obrabia.
moz_places.sh
W skrypcie trzeba zmienić pierwszy parametr srcdb na swoją bazę. Tworzymy kopię bazy, bo firefox blokuje do niej dostęp, jeśli jest włączony.
Na wyjściu skryptu dostajemy listę postaci:
link | tytuł
Można też ustawić wypisywanie tylko jednego z nich. Uzyskane dane można już dowolnie przeszukiwać, jeśli się tylko wie jak :). Do pobrania moz_places.sh lub obejrzenia:
#!/bin/bash
srcdb=$HOME/.mozilla/firefox/profil.lucas/places.sqlite
db=/dev/shm/places.sqlite # /dev/shm/ to RAM
[ -f $db ] && rm -f $db
cp $srcdb $db || exit 1
# ------------------------------------------------
usage(){
echo "${0##*/} { b, bookmarks | h, history} [ -u,--url | -t,--title ]"
exit $1
}
# ------------------------------------------------
get_history(){
sqlite3 $db <<!
SELECT $select
FROM moz_places p, moz_historyvisits h
WHERE p.hidden=0 AND p.id = h.place_id
;
!
}
# ------------------------------------------------
get_bookmarks(){
sqlite3 $db <<!
SELECT $select
FROM moz_places p, moz_bookmarks b
WHERE p.hidden=0 AND p.id = b.fk
;
!
}
# ------------------------------------------------
# wybieramy co wyświetlić: url, tytuł, wszystko
select='p.url , p.title'
[[ $2 ]] && {
case "$2" in
-u|--url) select='p.url' ;;
-t|--title) select='p.title' ;;
*) usage 1 ;;
esac
}
# ------------------------------------------------
# wybieramy źródło: zakładki, historia
[[ $1 ]] && {
case "$1" in
h|history) get_history ;;
b|bookmarks) get_bookmarks ;;
*) usage 1 ;;
esac
} || usage
Jak tego używać
Skrypty wymaga podania, z której tablicy w bazie korzystamy (historia, czy zakładki), a drugi parametr jest opcjonalny.
$ moz_places.sh
moz_places.sh { b, bookmarks | h, history} [ -u,--url | -t,--title ]
$ moz_places.sh b # or h
http://www.web.com|Web title
...
$ moz_places.sh b -u # or --url
http://www.web.com
...
$ moz_places.sh b -t # or --title
Web title
...
Szukaj w adresach
ftp
$ moz_places.sh b | grep ^ftp
szukaj tytułu zaczynającego się od słowa
fedora
$ moz_places.sh b | awk -F'|' '$2 ~/^fedora/ {print $0}'
... również z dużej litery
$ moz_places.sh b | awk -F'|' '$2 ~/^[fF]edora/ {print $0}'
szukaj tytułu zaczynającego się od słowa
[fF]edora, ale w adresie strony nie może być słowa
fedora
$ moz_places.sh b \
| awk -F'|' '$2 ~/^[fF]edora/ {print $0}' \
| awk -F'|' '$1 !~/fedora/ {print $0}'
Na koniec coś głupiego :) Która domena jest Twoim zdaniem najciekawsza?
$ moz_places.sh b \
| awk -F'/' '{print $3}' \
| sed 's:^www\.::g' \
| sort | uniq -cd | sort -n | tail -n 7
Gdyby ktoś chciał pogrzebać w bazie, a ma zerowe doświadczenie proponuję wygodny GUI sqliteman lub konsole:
pomoc sqlite3 $db ".help"
lista tablic sqlite3 $db ".tables"
schemat wybranej tablicy sqlite3 $db ".schema moz_places"