Using Bash scripts in Linux to delete the history, cookies and cache files of Firefox, Google Chrome and Thunderbird
March 19, 2020 1 Comment
The browsing data stored by Firefox, Google Chrome and Thunderbird can be deleted using the respective application’s GUI. But you can also do that using a Bash script, which could be useful if you want to delete unnecessary/unwanted files before e.g. backing up your home directory, or if you want a quick and easy way to clear-out browsing data. In this post I list the scripts and Desktop Configuration files I have created in Gentoo Linux and in Lubuntu 18.04 to remove browsing data.
In the case of Thunderbird, I am not sure if it is safe to delete Thunderbird’s cache files so my script only deletes cookies. Anyway, that could be added later if it transpires there is no harm in deleting Thunderbird’s cache files.
I am using the following 64-bit versions of the two browsers and e-mail client:
- Mozilla Firefox 74.0
- Mozilla Thunderbird 68.5.0 in Gentoo Linux only
- Google Chrome 80.0.3987.132 in Gentoo Linux
- Google Chrome 67.0.3396.99 in Lubuntu 18.04
I have not tested my scripts with other versions of Firefox, Chrome and Thunderbird, nor in other installations, so please do check carefully the directory paths and commands in the script against the directory paths in your installation before selecting ‘[D]elete
‘ in the running script.
In Lubuntu 18.04 I had to install sqlite3
first:
$ sudo apt install sqlite3
In Gentoo Linux it was already installed:
$ eix -I sqlite
[I] dev-db/sqlite
Available versions: (3) 3.29.0^t 3.30.1^t 3.31.1^t
{debug doc icu +readline secure-delete static-libs tcl test tools ABI_MIPS="n32 n64 o32" ABI_RISCV="lp64 lp64d" ABI_S390="32 64" ABI_X86="32 64 x32"}
Installed versions: 3.31.1(3)^t(19:53:28 13/03/20)(icu readline secure-delete -debug -doc -static-libs -tcl -test -tools ABI_MIPS="-n32 -n64 -o32" ABI_RISCV="-lp64 -lp64d" ABI_S390="-32 -64" ABI_X86="32 64 -x32")
Homepage: https://sqlite.org/
Description: SQL database engine
Firefox and Thunderbird
I created the Bash script Firefox_or_Thunderbird_-_Clear_data.sh
listed below. The user can select only Firefox or only Thunderbird, or both, and the script enables the user to choose whether to just view the current situation or to delete the data. The script checks if the applications are running and will not do anything if they are. In fact, the script offers the user the option to terminate the applications if they happen to be running. The script is still usable if either Firefox or Thunderbird are not installed. The same script can be used in Gentoo and in Lubuntu 18.04, and I believe it would also work in Ubuntu but have not tested it with that distribution.
#!/bin/bash # # If Delete is selected for Firefox, this script deletes the entire history, cookies, site data and cache. # If Delete is selected for Thunderbird, this script deletes the cookies and leaves the cache intact. # echo echo "WARNING:" echo "The Firefox Browser must not be running if you are going to list or delete its data files." echo "The Thunderbird e-mail client must not be running if you are going to list or delete its data files." echo FIREFOX=$( ls $HOME/.mozilla/firefox 2>/dev/null | grep .default ) THUNDERBIRD=$( ls $HOME/.thunderbird 2>/dev/null | grep .default ) while true do echo -n "[F]irefox, [T]hunderbird, [B]oth or [E]xit: " read -n1 PROMPT2 echo case $PROMPT2 in [fF]* ) CHOICE2="F"; break;; [tT]* ) CHOICE2="T"; break;; [bB]* ) CHOICE2="B"; break;; [eE]* ) exit;; * ) echo "Invalid entry.";; esac done FRUNNING="N" pgrep -u $USER firefox > /dev/null if [[ $? -eq 0 ]]; then FRUNNING="Y" while true do echo echo -n "The Firefox browser is running. Do you wish to close it now? [Y/N]: " read -n1 PROMPT0 echo case $PROMPT0 in [yY]* ) CHOICE0="Y"; break;; [nN]* ) CHOICE0="N"; break;; * ) echo "Invalid entry.";; esac done if [[ $CHOICE0 == "Y" ]]; then FPID=$( pgrep -u $USER firefox ) FPID=$( echo $FPID | cut -d" " -f1 ) kill -1 $FPID FRUNNING="N" fi fi TRUNNING="N" pgrep -u $USER thunderbird > /dev/null if [[ $? -eq 0 ]]; then TRUNNING="Y" while true do echo -n "The Thunderbird e-mail client is running. Do you wish to close it now? [Y/N]: " read -n1 PROMPT1 echo case $PROMPT1 in [yY]* ) CHOICE1="Y"; break;; [nN]* ) CHOICE1="N"; break;; * ) echo "Invalid entry.";; esac done if [[ $CHOICE1 == "Y" ]]; then FPID=$( pgrep -u $USER thunderbird ) FPID=$( echo $FPID | cut -d" " -f1 ) kill -1 $FPID TRUNNING="N" fi fi ABORT="N" if [[ $FRUNNING == "Y" ]]; then if [[ $CHOICE2 == "F" ]] || [[ $CHOICE2 == "B" ]]; then echo echo "Please quit Firefox then re-run this script." echo ABORT="Y" fi fi if [[ $TRUNNING == "Y" ]]; then if [[ $CHOICE2 == "T" ]] || [[ $CHOICE2 == "B" ]]; then echo echo "Please quit Thunderbird then re-run this script." echo ABORT="Y" fi fi if [[ $ABORT == "N" ]]; then while true do echo echo -n "[D]elete, [L]ist or [E]xit: " read -n1 PROMPT3 echo case $PROMPT3 in [dD]* ) CHOICE3="D"; break;; [lL]* ) CHOICE3="L"; break;; [eE]* ) exit;; * ) echo "Invalid entry.";; esac done if [[ $CHOICE3 == "D" ]]; then if [[ $CHOICE2 == "F" ]] || [[ $CHOICE2 == "B" ]]; then if [ -z "$FIREFOX" ]; then echo "Firefox directory does not exist" else echo echo "Deleting Firefox History..........." echo "===================================" sqlite3 ${HOME}/.mozilla/firefox/${FIREFOX}/places.sqlite "SELECT datetime(moz_historyvisits.visit_date/1000000,'unixepoch'), moz_places.url FROM moz_places, moz_historyvisits WHERE moz_places.id = moz_historyvisits.place_id;" sqlite3 ${HOME}/.mozilla/firefox/${FIREFOX}/places.sqlite "delete from moz_historyvisits;" echo echo "Deleting Firefox Cookies........" echo "================================" sqlite3 ${HOME}/.mozilla/firefox/${FIREFOX}/cookies.sqlite "select datetime(creationTime/1000000,'unixepoch'),host from moz_cookies; delete from moz_cookies;" echo echo "Deleting Firefox Site Data........" echo "==================================" ls ${HOME}/.mozilla/firefox/${FIREFOX}/storage/default/ | grep http find ${HOME}/.mozilla/firefox/${FIREFOX}/storage/default -name "http*" -type d -exec rm -r "{}" \; -prune echo echo "Deleting Firefox Cache..........." echo "=================================" NUM=$( ls -1 ${HOME}/.cache/mozilla/firefox/${FIREFOX}/cache2/entries | wc -l ) SIZ=$( du -sbh ${HOME}/.cache/mozilla/firefox/${FIREFOX}/cache2/entries ) SIZ=$( echo $SIZ | cut -d" " -f1 ) echo "Files: $NUM Size: $SIZ" find ${HOME}/.cache/mozilla/firefox/${FIREFOX}/cache2/entries -type f -delete 2>/dev/null echo fi fi if [[ $CHOICE2 == "T" ]] || [[ $CHOICE2 == "B" ]]; then if [ -z "$THUNDERBIRD" ]; then echo "Thunderbird directory does not exist" else echo "Deleting Thunderbird Cookies........" echo "====================================" sqlite3 ${HOME}/.thunderbird/${THUNDERBIRD}/cookies.sqlite "select datetime(creationTime/1000000,'unixepoch'),host from moz_cookies; delete from moz_cookies;" fi fi fi if [[ $CHOICE3 == "L" ]]; then if [[ $CHOICE2 == "F" ]] || [[ $CHOICE2 == "B" ]]; then if [ -z "$FIREFOX" ]; then echo "Firefox directory does not exist" else echo echo "Current Firefox History........." echo "================================" sqlite3 ${HOME}/.mozilla/firefox/${FIREFOX}/places.sqlite "SELECT datetime(moz_historyvisits.visit_date/1000000,'unixepoch'), moz_places.url FROM moz_places, moz_historyvisits WHERE moz_places.id = moz_historyvisits.place_id;" | more echo echo "Current Firefox Cookies........" echo "===============================" sqlite3 ${HOME}/.mozilla/firefox/${FIREFOX}/cookies.sqlite "select datetime(creationTime/1000000,'unixepoch'),host from moz_cookies;" | more echo echo "Current Firefox Site Data........" echo "=================================" ls ${HOME}/.mozilla/firefox/${FIREFOX}/storage/default/ | grep http | more echo echo "Current Firefox Cache..........." echo "=================================" NUM=$( ls -1 ${HOME}/.cache/mozilla/firefox/${FIREFOX}/cache2/entries | wc -l ) SIZ=$( du -sbh ${HOME}/.cache/mozilla/firefox/${FIREFOX}/cache2/entries ) SIZ=$( echo $SIZ | cut -d" " -f1 ) echo "Files: $NUM Size: $SIZ" echo fi fi if [[ $CHOICE2 == "T" ]] || [[ $CHOICE2 == "B" ]]; then if [ -z "$THUNDERBIRD" ]; then echo "Thunderbird directory does not exist" else echo "Current Thunderbird Cookies......" echo "=================================" sqlite3 ${HOME}/.thunderbird/${THUNDERBIRD}/cookies.sqlite "select datetime(creationTime/1000000,'unixepoch'),host from moz_cookies;" | more fi fi fi fi printf "\n" read -rep $'\n Press ENTER to exit ' PROMPT4
Listed below is the Desktop Configuration file Firefox_or_Thunderbird_-_Clear_data.desktop
for KDE in Gentoo Linux that I created in the ~/Desktop/
directory. I downloaded a nice PNG icon from the Web, which I saved as ~/Pictures/Icons/Mozilla.png
, although of course the Desktop Configuration file can be modified if the icon file were to be stored elsewhere. Obviously change the username accordingly.
[Desktop Entry] Comment[en_GB]=Clear Firefox or Thunderbird caches and cookies Comment=Clear Firefox or Thunderbird caches and cookies Exec=/home/fitzcarraldo/Firefox_or_Thunderbird_-_Clear_data.sh GenericName[en_GB]=Clear Firefox or Thunderbird caches and cookies GenericName=Clear Firefox or Thunderbird caches and cookies Icon=/home/fitzcarraldo/Pictures/Icons/Mozilla.png MimeType= Name[en_GB]=Firefox_or_Thunderbird_-_Clear_data Name=Firefox_or_Thunderbird_-_Clear_data Path=/home/fitzcarraldo StartupNotify=true Terminal=true TerminalOptions= Type=Application X-DBUS-ServiceName= X-DBUS-StartupType=none X-KDE-SubstituteUID=false X-KDE-Username=fitzcarraldo
The equivalent Desktop Configuration file I created for Lubuntu 18.04 is very similar:
[Desktop Entry] Comment[en_GB]=Clear Firefox or Thunderbird caches and cookies Comment=Clear Firefox or Thunderbird caches and cookies Exec=/home/fitzcarraldo/Firefox_or_Thunderbird_-_Clear_data.sh GenericName[en_GB]=Clear Firefox or Thunderbird caches and cookies GenericName=Clear Firefox or Thunderbird caches and cookies Icon=/home/fitzcarraldo/Pictures/Icons/Mozilla.png MimeType= Name[en_GB]=Firefox_or_Thunderbird_-_Clear_data Name=Firefox_or_Thunderbird_-_Clear_data Path=/home/fitzcarraldo StartupNotify=true Terminal=true TerminalOptions=\s--noclose Type=Application X-DBUS-ServiceName= X-DBUS-StartupType=none X-LXDE-SubstituteUID=false X-LXDE-Username=fitzcarraldo
Google Chrome
I created the following Bash script Google-Chrome_-_Clear_data.sh
for the Google Chrome browser in Gentoo Linux. Different scripts have to be used in Gentoo Linux and in Lubuntu 18.04 because the paths are different.
#!/bin/bash # # If Delete is selected, this script deletes the entire cache, the code cache, # the Visited Links file and the Top Sites file. # echo echo "WARNING:" echo "The Google Chrome browser must not be running if you are going to list or delete its data files." echo while true do echo -n "[D]elete, [L]ist or [E]xit: " read -n1 PROMPT1 echo case $PROMPT1 in [dD]* ) CHOICE1="D"; break;; [lL]* ) CHOICE1="L"; break;; [eE]* ) exit;; * ) echo "Invalid entry.";; esac done CRUNNING="N" pgrep -u $USER chrome > /dev/null if [[ $? -eq 0 ]]; then CRUNNING="Y" while true do echo echo -n "The Google Chrome browser is running. Do you wish to close it now? [Y/N]: " read -n1 PROMPT0 echo case $PROMPT0 in [yY]* ) CHOICE0="Y"; break;; [nN]* ) CHOICE0="N"; break;; * ) echo "Invalid entry.";; esac done if [[ $CHOICE0 == "Y" ]]; then FPID=$( pgrep -u $USER chrome ) FPID=$( echo $FPID | cut -d" " -f1 ) kill -1 $FPID CRUNNING="N" fi fi if [[ $CRUNNING == "Y" ]]; then echo echo "Please quit Google Chrome then re-run this script." echo else if [[ $CHOICE1 == "D" ]]; then echo echo "Deleting URLs..........." echo "========================" sqlite3 ${HOME}/.config/google-chrome/Profile\ 2/History "select datetime(last_visit_time/1000000 + (strftime('%s', '1601-01-01')),'unixepoch'),url from urls; delete from urls;" echo echo "Deleting Cookies........" echo "========================" sqlite3 ${HOME}/.config/google-chrome/Profile\ 2/Cookies "select datetime(creation_utc/1000000 + (strftime('%s', '1601-01-01')),'unixepoch'),host_key from cookies; delete from cookies;" if [[ -d ${HOME}/.cache/google-chrome/Profile\ 2/Cache ]]; then echo echo "Deleting Chrome Cache......." echo "=====================" NUM=$( ls -1 ${HOME}/.cache/google-chrome/Profile\ 2/Cache | wc -l ) SIZ=$( du -sbh ${HOME}/.cache/google-chrome/Profile\ 2/Cache ) SIZ=$( echo $SIZ | cut -d" " -f1 ) echo "Files: $NUM Size: $SIZ" rm -r ${HOME}/.cache/google-chrome/Profile\ 2/Cache fi if [[ -d ${HOME}/.cache/google-chrome/Profile\ 2/Code\ Cache ]]; then echo echo "Deleting Code Cache......" echo "=========================" rm -r ${HOME}/.cache/google-chrome/Profile\ 2/Code\ Cache fi if [[ -f ${HOME}/.config/google-chrome/Profile\ 2/Visited\ Links ]]; then echo echo "Deleting Visited Links......" echo "============================" rm ${HOME}/.config/google-chrome/Profile\ 2/Visited\ Links fi if [[ -f ${HOME}/.config/google-chrome/Profile\ 2/Top\ Sites ]]; then echo echo "Deleting Top Sites......" echo "========================" rm ${HOME}/.config/google-chrome/Profile\ 2/Top\ Sites fi fi if [[ $CHOICE1 == "L" ]]; then echo echo "Current URLs..........." echo "=======================" sqlite3 ${HOME}/.config/google-chrome/Profile\ 2/History "select datetime(last_visit_time/1000000 + (strftime('%s', '1601-01-01')),'unixepoch'),url from urls;" | more echo echo "Current Cookies........" echo "=======================" sqlite3 ${HOME}/.config/google-chrome/Profile\ 2/Cookies "select datetime(creation_utc/1000000 + (strftime('%s', '1601-01-01')),'unixepoch'),host_key from cookies;" | more if [[ -d ${HOME}/.cache/google-chrome/Profile\ 2/Cache ]]; then echo echo "Current Chrome Cache............." echo "=================================" NUM=$( ls -1 ${HOME}/.cache/google-chrome/Profile\ 2/Cache | wc -l ) SIZ=$( du -sbh ${HOME}/.cache/google-chrome/Profile\ 2/Cache ) SIZ=$( echo $SIZ | cut -d" " -f1 ) echo "Files: $NUM Size: $SIZ" fi fi fi printf "\n" read -rep $'\n Press ENTER to exit ' PROMPT2
And below is the Desktop Configuration file Google-Chrome_-_Clear_data.desktop
for Gentoo Linux. I downloaded a nice PNG icon from the Web, which I saved as ~/Pictures/Icons/Google-Chrome.png
, although of course the Desktop Configuration file can be adjusted if the icon file were stored elsewhere. Obviously change the username accordingly.
[Desktop Entry] Comment[en_GB]=Clear Google Chrome cache and cookies Comment=Clear Google Chrome cache and cookies Exec=/home/fitzcarraldo/Google-Chrome_-_Clear_data.sh GenericName[en_GB]=Clear Google Chrome cache and cookies GenericName=Clear Google Chrome cache and cookies Icon=/home/fitzcarraldo/Pictures/Icons/Google-Chrome.png MimeType= Name[en_GB]=Google-Chrome_-_Clear_data Name=Google-Chrome_-_Clear_data Path=/home/fitzcarraldo StartupNotify=true Terminal=true TerminalOptions= Type=Application X-DBUS-ServiceName= X-DBUS-StartupType=none X-KDE-SubstituteUID=false X-KDE-Username=
Below is the version of the script Google-Chrome_-_Clear_data.sh
for Lubuntu 18.04:
#!/bin/bash # # If Delete is selected, this script deletes the entire cache, the code cache, # the Visited Links file and the Top Sites file. # echo echo "WARNING:" echo "The Google Chrome browser must not be running if you are going to list or delete its data files." echo while true do echo -n "[D]elete, [L]ist or [E]xit: " read -n1 PROMPT1 echo case $PROMPT1 in [dD]* ) CHOICE1="D"; break;; [lL]* ) CHOICE1="L"; break;; [eE]* ) exit;; * ) echo "Invalid entry.";; esac done CRUNNING="N" pgrep -u $USER chrome > /dev/null if [[ $? -eq 0 ]]; then CRUNNING="Y" while true do echo echo -n "The Google Chrome browser is running. Do you wish to close it now? [Y/N]: " read -n1 PROMPT0 echo case $PROMPT0 in [yY]* ) CHOICE0="Y"; break;; [nN]* ) CHOICE0="N"; break;; * ) echo "Invalid entry.";; esac done if [[ $CHOICE0 == "Y" ]]; then FPID=$( pgrep -u $USER chrome ) FPID=$( echo $FPID | cut -d" " -f1 ) kill -1 $FPID CRUNNING="N" fi fi if [[ $CRUNNING == "Y" ]]; then echo echo "Please quit Google Chrome then re-run this script." echo else if [[ $CHOICE1 == "D" ]]; then echo echo "Deleting URLs..........." echo "========================" sqlite3 ${HOME}/.config/google-chrome/Default/History "select datetime(last_visit_time/1000000 + (strftime('%s', '1601-01-01')),'unixepoch'),url from urls; delete from urls;" echo echo "Deleting Cookies........" echo "========================" sqlite3 ${HOME}/.config/google-chrome/Default/Cookies "select datetime(creation_utc/1000000 + (strftime('%s', '1601-01-01')),'unixepoch'),host_key from cookies; delete from cookies;" if [[ -d ${HOME}/.cache/google-chrome/Default/Cache ]]; then echo echo "Deleting Chrome Cache......." echo "=====================" NUM=$( ls -1 ${HOME}/.cache/google-chrome/Default/Cache | wc -l ) SIZ=$( du -sbh ${HOME}/.cache/google-chrome/Default/Cache ) SIZ=$( echo $SIZ | cut -d" " -f1 ) echo "Files: $NUM Size: $SIZ" rm -r ${HOME}/.cache/google-chrome/Default/Cache fi if [[ -d ${HOME}/.cache/google-chrome/Default/Code\ Cache ]]; then echo echo "Deleting Code Cache......" echo "=========================" rm -r ${HOME}/.cache/google-chrome/Default/Code\ Cache fi if [[ -f ${HOME}/.config/google-chrome/Default/Visited\ Links ]]; then echo echo "Deleting Visited Links......" echo "============================" rm ${HOME}/.config/google-chrome/Default/Visited\ Links fi if [[ -f ${HOME}/.config/google-chrome/Default/Top\ Sites ]]; then echo echo "Deleting Top Sites......" echo "========================" rm ${HOME}/.config/google-chrome/Default/Top\ Sites fi fi if [[ $CHOICE1 == "L" ]]; then echo echo "Current URLs..........." echo "=======================" sqlite3 ${HOME}/.config/google-chrome/Default/History "select datetime(last_visit_time/1000000 + (strftime('%s', '1601-01-01')),'unixepoch'),url from urls;" | more echo echo "Current Cookies........" echo "=======================" sqlite3 ${HOME}/.config/google-chrome/Default/Cookies "select datetime(creation_utc/1000000 + (strftime('%s', '1601-01-01')),'unixepoch'),host_key from cookies;" | more if [[ -d ${HOME}/.cache/google-chrome/Default/Cache ]]; then echo echo "Current Chrome Cache............." echo "=================================" NUM=$( ls -1 ${HOME}/.cache/google-chrome/Default/Cache | wc -l ) SIZ=$( du -sbh ${HOME}/.cache/google-chrome/Default/Cache ) SIZ=$( echo $SIZ | cut -d" " -f1 ) echo "Files: $NUM Size: $SIZ" fi fi fi printf "\n" read -rep $'\n Press ENTER to exit ' PROMPT2
And below is the Desktop Configuration file Google-Chrome_-_Clear_data.desktop
for Lubuntu 18.04. I downloaded a nice PNG icon from the Web, which I saved as ~/Pictures/Icons/Google-Chrome.png
, although of course the Desktop Configuration file can be adjusted if the icon file were stored elsewhere. Obviously change the username accordingly.
[Desktop Entry] Comment[en_GB]=Clear Google Chrome cache and cookies Comment=Clear Google Chrome cache and cookies Exec=/home/fitzcarraldo/Google-Chrome_-_Clear_data.sh GenericName[en_GB]=Clear Google Chrome cache and cookies GenericName=Clear Google Chrome cache and cookies Icon=/home/fitzcarraldo/Pictures/Icons/Google-Chrome.png MimeType= Name[en_GB]=Google-Chrome_-_Clear_data Name=Google-Chrome_-_Clear_data Path=/home/fitzcarraldo StartupNotify=true Terminal=true TerminalOptions=\s--noclose Type=Application X-DBUS-ServiceName= X-DBUS-StartupType=none X-LXDE-SubstituteUID=false X-LXDE-Username=fitzcarraldo
Below are a few examples of the output when I launch the scripts.
Here is the output of the script that deals with Firefox and/or Thunderbird when I only list the current situation:
WARNING:
The Firefox Browser must not be running if you are going to list or delete its data files.
The Thunderbird e-mail client must not be running if you are going to list or delete its data files.
[F]irefox, [T]hunderbird, [B]oth or [E]xit: b
The Firefox browser is running. Do you wish to close it now? [Y/N]: y
The Thunderbird e-mail client is running. Do you wish to close it now? [Y/N]: y
[D]elete, [L]ist or [E]xit: l
Current Firefox History.........
================================
2020-03-19 17:27:24|https://www.accuweather.com/en/gb/united-kingdom-weather
2020-03-19 17:27:20|https://www.youtube.com/
2020-03-19 17:27:30|https://www.theguardian.com/uk
2020-03-19 17:27:38|http://www.jb.com.br/
2020-03-19 17:27:38|https://www.jb.com.br/
Current Firefox Cookies........
===============================
2020-03-19 17:27:20|.youtube.com
2020-03-19 17:27:20|.youtube.com
2020-03-19 17:27:20|.youtube.com
2020-03-19 17:27:22|accounts.google.com
2020-03-19 17:27:23|.doubleclick.net
2020-03-19 17:27:24|www.accuweather.com
2020-03-19 17:27:24|.accuweather.com
2020-03-19 17:27:24|.google.com
2020-03-19 17:27:24|www.accuweather.com
2020-03-19 17:27:24|www.accuweather.com
2020-03-19 17:27:25|www.accuweather.com
2020-03-19 17:27:25|.accuweather.com
2020-03-19 17:27:24|.accuweather.com
2020-03-19 17:27:25|www.accuweather.com
2020-03-19 17:27:30|.theguardian.com
2020-03-19 17:27:36|.theguardian.com
2020-03-19 17:27:36|.theguardian.com
2020-03-19 17:27:39|.denakop.com
2020-03-19 17:27:43|www.jb.com.br
2020-03-19 17:27:43|www.jb.com.br
2020-03-19 17:27:43|www.jb.com.br
2020-03-19 17:27:43|www.jb.com.br
2020-03-19 17:27:43|www.jb.com.br
2020-03-19 17:27:43|.tt-10969-0.seg.t.tailtarget.com
2020-03-19 17:27:43|.t.tailtarget.com
2020-03-19 17:27:44|www.jb.com.br
2020-03-19 17:27:44|.t.tailtarget.com
2020-03-19 17:27:44|.t.tailtarget.com
2020-03-19 17:27:44|.t.tailtarget.com
2020-03-19 17:27:43|.t.tailtarget.com
2020-03-19 17:27:44|www.jb.com.br
2020-03-19 17:27:44|.tt-10969-0.seg.t.tailtarget.com
2020-03-19 17:27:44|.t.tailtarget.com
2020-03-19 17:27:46|www.jb.com.br
2020-03-19 17:27:46|.www.jb.com.br
2020-03-19 17:27:43|www.jb.com.br
2020-03-19 17:27:43|www.jb.com.br
Current Firefox Site Data........
=================================
https+++www.google.com
https+++www.theguardian.com
https+++www.youtube.com
Current Firefox Cache...........
=================================
Files: 383 Size: 15M
Current Thunderbird Cookies......
=================================
Press ENTER to exit
Here is the output of the script that deals with Firefox and/or Thunderbird when I delete only the Firefox data:
WARNING:
The Firefox Browser must not be running if you are going to list or delete its data files.
The Thunderbird e-mail client must not be running if you are going to list or delete its data files.
[F]irefox, [T]hunderbird, [B]oth or [E]xit: f
[D]elete, [L]ist or [E]xit: d
Deleting Firefox History...........
===================================
2020-03-19 17:27:24|https://www.accuweather.com/en/gb/united-kingdom-weather
2020-03-19 17:27:20|https://www.youtube.com/
2020-03-19 17:27:30|https://www.theguardian.com/uk
2020-03-19 17:27:38|http://www.jb.com.br/
2020-03-19 17:27:38|https://www.jb.com.br/
Deleting Firefox Cookies........
================================
2020-03-19 17:27:20|.youtube.com
2020-03-19 17:27:20|.youtube.com
2020-03-19 17:27:20|.youtube.com
2020-03-19 17:27:22|accounts.google.com
2020-03-19 17:27:23|.doubleclick.net
2020-03-19 17:27:24|www.accuweather.com
2020-03-19 17:27:24|.accuweather.com
2020-03-19 17:27:24|.google.com
2020-03-19 17:27:24|www.accuweather.com
2020-03-19 17:27:24|www.accuweather.com
2020-03-19 17:27:25|www.accuweather.com
2020-03-19 17:27:25|.accuweather.com
2020-03-19 17:27:24|.accuweather.com
2020-03-19 17:27:25|www.accuweather.com
2020-03-19 17:27:30|.theguardian.com
2020-03-19 17:27:36|.theguardian.com
2020-03-19 17:27:36|.theguardian.com
2020-03-19 17:27:39|.denakop.com
2020-03-19 17:27:43|www.jb.com.br
2020-03-19 17:27:43|www.jb.com.br
2020-03-19 17:27:43|www.jb.com.br
2020-03-19 17:27:43|www.jb.com.br
2020-03-19 17:27:43|www.jb.com.br
2020-03-19 17:27:43|.tt-10969-0.seg.t.tailtarget.com
2020-03-19 17:27:43|.t.tailtarget.com
2020-03-19 17:27:44|www.jb.com.br
2020-03-19 17:27:44|.t.tailtarget.com
2020-03-19 17:27:44|.t.tailtarget.com
2020-03-19 17:27:44|.t.tailtarget.com
2020-03-19 17:27:43|.t.tailtarget.com
2020-03-19 17:27:44|www.jb.com.br
2020-03-19 17:27:44|.tt-10969-0.seg.t.tailtarget.com
2020-03-19 17:27:44|.t.tailtarget.com
2020-03-19 17:27:46|www.jb.com.br
2020-03-19 17:27:46|.www.jb.com.br
2020-03-19 17:27:43|www.jb.com.br
2020-03-19 17:27:43|www.jb.com.br
Deleting Firefox Site Data........
==================================
https+++www.google.com
https+++www.theguardian.com
https+++www.youtube.com
Deleting Firefox Cache...........
=================================
Files: 383 Size: 15M
Press ENTER to exit
Here is the output of the script that deals with Google Chrome when I just list the current situation:
WARNING:
The Google Chrome browser must not be running if you are going to list or delete its data files.
[D]elete, [L]ist or [E]xit: l
Current URLs...........
=======================
2020-03-19 17:30:41|https://duckduckgo.com/
2020-03-19 17:30:44|https://www.youtube.com/
2020-03-19 17:30:49|https://www.accuweather.com/en/gb/united-kingdom-weather
2020-03-19 17:30:57|http://www.folha.uol.com.br/
2020-03-19 17:30:57|https://www.folha.uol.com.br/
Current Cookies........
=======================
2020-03-19 17:30:49|.accuweather.com
2020-03-19 17:31:11|.uol.com.br
2020-03-19 17:31:11|.bt.uol.com.br
2020-03-19 17:30:44|.youtube.com
2020-03-19 17:30:50|.accuweather.com
2020-03-19 17:30:57|.accuweather.com
2020-03-19 17:30:45|accounts.google.com
2020-03-19 17:30:44|.youtube.com
2020-03-19 17:30:46|.doubleclick.net
2020-03-19 17:31:08|player.mais.uol.com.br
2020-03-19 17:30:50|.google.com
2020-03-19 17:31:11|.dna.uol.com.br
2020-03-19 17:31:05|paywall.folha.uol.com.br
2020-03-19 17:30:58|.www.accuweather.com
2020-03-19 17:31:04|.smartadserver.com
2020-03-19 17:31:04|.smartadserver.com
2020-03-19 17:30:50|.scorecardresearch.com
2020-03-19 17:30:50|.scorecardresearch.com
2020-03-19 17:30:44|.youtube.com
2020-03-19 17:30:44|.youtube.com
2020-03-19 17:31:05|.uol.com.br
2020-03-19 17:30:51|www.accuweather.com
2020-03-19 17:31:10|www.folha.uol.com.br
2020-03-19 17:30:51|www.accuweather.com
2020-03-19 17:30:58|www.folha.uol.com.br
2020-03-19 17:30:51|www.accuweather.com
2020-03-19 17:31:10|www.folha.uol.com.br
2020-03-19 17:30:51|www.accuweather.com
2020-03-19 17:31:10|www.folha.uol.com.br
2020-03-19 17:30:58|www.accuweather.com
2020-03-19 17:30:58|.accuweather.com
2020-03-19 17:31:01|.uol.com.br
2020-03-19 17:30:58|.accuweather.com
2020-03-19 17:31:04|www.folha.uol.com.br
2020-03-19 17:31:04|www.folha.uol.com.br
2020-03-19 17:30:50|.accuweather.com
2020-03-19 17:31:01|.uol.com.br
2020-03-19 17:30:50|.accuweather.com
2020-03-19 17:31:01|.uol.com.br
2020-03-19 17:31:11|.uol.com.br
2020-03-19 17:31:11|.uol.com.br
2020-03-19 17:30:51|.accuweather.com
2020-03-19 17:30:51|.accuweather.com
2020-03-19 17:30:51|.accuweather.com
2020-03-19 17:31:00|.t.tailtarget.com
2020-03-19 17:31:05|www.folha.uol.com.br
2020-03-19 17:31:05|paywall.folha.uol.com.br
2020-03-19 17:30:51|.accuweather.com
2020-03-19 17:31:04|.rubiconproject.com
2020-03-19 17:30:49|www.accuweather.com
2020-03-19 17:30:50|www.accuweather.com
2020-03-19 17:31:08|.uol.com.br
2020-03-19 17:30:57|www.accuweather.com
2020-03-19 17:31:05|www.folha.uol.com.br
2020-03-19 17:31:05|www.folha.uol.com.br
2020-03-19 17:31:05|www.folha.uol.com.br
2020-03-19 17:31:05|www.folha.uol.com.br
2020-03-19 17:31:04|.rubiconproject.com
2020-03-19 17:31:06|player.mais.uol.com.br
2020-03-19 17:31:06|player.mais.uol.com.br
2020-03-19 17:31:05|.t.tailtarget.com
2020-03-19 17:30:58|.uol.com.br
2020-03-19 17:30:58|.navdmp.com
2020-03-19 17:31:04|.smartadserver.com
2020-03-19 17:31:05|www.folha.uol.com.br
2020-03-19 17:30:51|.accuweather.com
2020-03-19 17:31:04|.rubiconproject.com
2020-03-19 17:31:04|.smartadserver.com
2020-03-19 17:31:04|.smartadserver.com
2020-03-19 17:31:04|.rubiconproject.com
2020-03-19 17:31:04|.rubiconproject.com
2020-03-19 17:31:06|ivccf.ivcbrasil.org.br
2020-03-19 17:31:10|.tt-10162-1.seg.t.tailtarget.com
2020-03-19 17:31:04|.tt-12340-4.seg.t.tailtarget.com
2020-03-19 17:31:05|www.folha.uol.com.br
2020-03-19 17:31:05|www.folha.uol.com.br
2020-03-19 17:31:04|www.folha.uol.com.br
2020-03-19 17:31:04|www.folha.uol.com.br
2020-03-19 17:31:04|www.folha.uol.com.br
2020-03-19 17:31:04|www.folha.uol.com.br
2020-03-19 17:31:05|.t.tailtarget.com
2020-03-19 17:31:05|.t.tailtarget.com
2020-03-19 17:31:05|.tt-10162-1.seg.t.tailtarget.com
2020-03-19 17:31:05|.tt-12340-4.seg.t.tailtarget.com
2020-03-19 17:31:05|.t.tailtarget.com
2020-03-19 17:31:00|.t.tailtarget.com
2020-03-19 17:30:50|www.accuweather.com
2020-03-19 17:30:57|www.accuweather.com
2020-03-19 17:31:04|.rubiconproject.com
2020-03-19 17:31:04|.rubiconproject.com
2020-03-19 17:31:04|.smartadserver.com
2020-03-19 17:30:50|www.accuweather.com
2020-03-19 17:31:04|.prg.smartadserver.com
2020-03-19 17:31:22|www.folha.uol.com.br
2020-03-19 17:31:20|.uol.com.br
2020-03-19 17:31:10|.uol.com.br
Current Chrome Cache.............
=================================
Files: 317 Size: 8.6M
Press ENTER to exit
Here is the output of the script that deals with Google Chrome when I delete the browser data:
WARNING:
The Google Chrome browser must not be running if you are going to list or delete its data files.
[D]elete, [L]ist or [E]xit: d
Deleting URLs...........
========================
2020-03-19 17:30:41|https://duckduckgo.com/
2020-03-19 17:30:44|https://www.youtube.com/
2020-03-19 17:30:49|https://www.accuweather.com/en/gb/united-kingdom-weather
2020-03-19 17:30:57|http://www.folha.uol.com.br/
2020-03-19 17:30:57|https://www.folha.uol.com.br/
Deleting Cookies........
========================
2020-03-19 17:30:49|.accuweather.com
2020-03-19 17:31:11|.uol.com.br
2020-03-19 17:31:11|.bt.uol.com.br
2020-03-19 17:30:44|.youtube.com
2020-03-19 17:30:50|.accuweather.com
2020-03-19 17:30:57|.accuweather.com
2020-03-19 17:30:45|accounts.google.com
2020-03-19 17:30:44|.youtube.com
2020-03-19 17:30:46|.doubleclick.net
2020-03-19 17:31:08|player.mais.uol.com.br
2020-03-19 17:30:50|.google.com
2020-03-19 17:31:11|.dna.uol.com.br
2020-03-19 17:31:05|paywall.folha.uol.com.br
2020-03-19 17:30:58|.www.accuweather.com
2020-03-19 17:31:04|.smartadserver.com
2020-03-19 17:31:04|.smartadserver.com
2020-03-19 17:30:50|.scorecardresearch.com
2020-03-19 17:30:50|.scorecardresearch.com
2020-03-19 17:30:44|.youtube.com
2020-03-19 17:30:44|.youtube.com
2020-03-19 17:31:05|.uol.com.br
2020-03-19 17:30:51|www.accuweather.com
2020-03-19 17:31:10|www.folha.uol.com.br
2020-03-19 17:30:51|www.accuweather.com
2020-03-19 17:30:58|www.folha.uol.com.br
2020-03-19 17:30:51|www.accuweather.com
2020-03-19 17:31:10|www.folha.uol.com.br
2020-03-19 17:30:51|www.accuweather.com
2020-03-19 17:31:10|www.folha.uol.com.br
2020-03-19 17:30:58|www.accuweather.com
2020-03-19 17:30:58|.accuweather.com
2020-03-19 17:31:01|.uol.com.br
2020-03-19 17:30:58|.accuweather.com
2020-03-19 17:31:04|www.folha.uol.com.br
2020-03-19 17:31:04|www.folha.uol.com.br
2020-03-19 17:30:50|.accuweather.com
2020-03-19 17:31:01|.uol.com.br
2020-03-19 17:30:50|.accuweather.com
2020-03-19 17:31:01|.uol.com.br
2020-03-19 17:31:11|.uol.com.br
2020-03-19 17:31:11|.uol.com.br
2020-03-19 17:30:51|.accuweather.com
2020-03-19 17:30:51|.accuweather.com
2020-03-19 17:30:51|.accuweather.com
2020-03-19 17:31:00|.t.tailtarget.com
2020-03-19 17:31:05|www.folha.uol.com.br
2020-03-19 17:31:05|paywall.folha.uol.com.br
2020-03-19 17:30:51|.accuweather.com
2020-03-19 17:31:04|.rubiconproject.com
2020-03-19 17:30:49|www.accuweather.com
2020-03-19 17:30:50|www.accuweather.com
2020-03-19 17:31:08|.uol.com.br
2020-03-19 17:30:57|www.accuweather.com
2020-03-19 17:31:05|www.folha.uol.com.br
2020-03-19 17:31:05|www.folha.uol.com.br
2020-03-19 17:31:05|www.folha.uol.com.br
2020-03-19 17:31:05|www.folha.uol.com.br
2020-03-19 17:31:04|.rubiconproject.com
2020-03-19 17:31:06|player.mais.uol.com.br
2020-03-19 17:31:06|player.mais.uol.com.br
2020-03-19 17:31:05|.t.tailtarget.com
2020-03-19 17:30:58|.uol.com.br
2020-03-19 17:30:58|.navdmp.com
2020-03-19 17:31:04|.smartadserver.com
2020-03-19 17:31:05|www.folha.uol.com.br
2020-03-19 17:30:51|.accuweather.com
2020-03-19 17:31:04|.rubiconproject.com
2020-03-19 17:31:04|.smartadserver.com
2020-03-19 17:31:04|.smartadserver.com
2020-03-19 17:31:04|.rubiconproject.com
2020-03-19 17:31:04|.rubiconproject.com
2020-03-19 17:31:06|ivccf.ivcbrasil.org.br
2020-03-19 17:31:10|.tt-10162-1.seg.t.tailtarget.com
2020-03-19 17:31:04|.tt-12340-4.seg.t.tailtarget.com
2020-03-19 17:31:05|www.folha.uol.com.br
2020-03-19 17:31:05|www.folha.uol.com.br
2020-03-19 17:31:04|www.folha.uol.com.br
2020-03-19 17:31:04|www.folha.uol.com.br
2020-03-19 17:31:04|www.folha.uol.com.br
2020-03-19 17:31:04|www.folha.uol.com.br
2020-03-19 17:31:05|.t.tailtarget.com
2020-03-19 17:31:05|.t.tailtarget.com
2020-03-19 17:31:05|.tt-10162-1.seg.t.tailtarget.com
2020-03-19 17:31:05|.tt-12340-4.seg.t.tailtarget.com
2020-03-19 17:31:05|.t.tailtarget.com
2020-03-19 17:31:00|.t.tailtarget.com
2020-03-19 17:30:50|www.accuweather.com
2020-03-19 17:30:57|www.accuweather.com
2020-03-19 17:31:04|.rubiconproject.com
2020-03-19 17:31:04|.rubiconproject.com
2020-03-19 17:31:04|.smartadserver.com
2020-03-19 17:30:50|www.accuweather.com
2020-03-19 17:31:04|.prg.smartadserver.com
2020-03-19 17:31:22|www.folha.uol.com.br
2020-03-19 17:31:20|.uol.com.br
2020-03-19 17:31:10|.uol.com.br
Deleting Chrome Cache.......
=====================
Files: 317 Size: 8.6M
Deleting Code Cache......
=========================
Deleting Visited Links......
============================
Deleting Top Sites......
========================
Press ENTER to exit
Update March 23, 2020: For those of you who would prefer a single script that can delete the browsing history, cookies and cache files of Google Chrome and/or Firefox and/or Thunderbird, I have now created the script clear_browser_data.sh
shown below with appropriate Desktop Configuration files for Gentoo Linux and Lubuntu 18.04. In addition I have now added the ability to list and delete the history and cache files of Thunderbird, as I have checked that deleting those is not detremental to Thunderbird. Furthermore, this new script finds the directories itself rather than having them partially hard-coded in the script, so I am using the same script in both Gentoo and Lubuntu 18.04. That said, I have not tested the script with other versions of Chrome, Firefox and Thunderbird, nor with other Linux distributions, so do not select [D]elete
until you have checked that the directories evaluated by the script match the directories in your installation.
#!/bin/bash # ######################################################################## # # Bash script to enable the user to list and/or delete browser data of: # Google Chrome browser # Mozilla Firefox browser # Mozilla Thunderbird e-mail client # ######################################################################## # # Check for existence of the applications' directories FIREFOX=$( ls $HOME/.mozilla/firefox 2>/dev/null | grep profiles.ini ) THUNDERBIRD=$( ls $HOME/.thunderbird 2>/dev/null | grep profiles.ini ) CHROME=$( ls -d $HOME/.config/google-chrome 2>/dev/null ) if [ -z "$CHROME" ]; then echo echo "Chrome directory does not exist" else # Chrome directory locations # CLOCALST=$( find $HOME/.config/google-chrome -type f -name "Local State" ) CCURPROF=$( cat "$CLOCALST" | awk -F "," '{for (I=1;I<=NF;I++) if ($I~/"info_cache"/) {print $(I)};}' | awk -F "info_cache" '{print $2}' | awk -F '"' '{print $3}' ) CHISTORY=$( find $HOME/.config/google-chrome/"$CCURPROF" -type f -name "History" ) CCOOKIES=$( find $HOME/.config/google-chrome/"$CCURPROF" -type f -name "Cookies" ) CVISITED=$( find $HOME/.config/google-chrome/"$CCURPROF" -type f -name "Visited Links" ) CTOPSITS=$( find $HOME/.config/google-chrome/"$CCURPROF" -type f -name "Top Sites" ) CCACHEDF=$( find $HOME/.cache/google-chrome/"$CCURPROF" -type d -name "Cache" ) CCODECAC=$( find $HOME/.cache/google-chrome/"$CCURPROF" -maxdepth 2 -type d -name "Code Cache" ) echo; echo "Chrome is using profile: $CCURPROF" fi if [ -z "$FIREFOX" ]; then echo echo "Firefox directory does not exist" else # Firefox file locations. First get the current Profile Name # The profiles are listed in 'profiles.ini'. # If profiles.ini does not contain a line 'Locked=1' then the current profile # is followed by the line 'Default=1'. If profiles.ini does contain 'Locked=1' # then the current profile is followed by the line 'Locked=1' # FPROFILE=$( find $HOME/.mozilla/firefox/ -type f -name "profiles.ini" ) if grep -q "Locked=1$" "$FPROFILE"; then FCURPROF=$( grep -B 1 "Locked=1$" "$FPROFILE" | grep -v Locked ) else FCURPROF=$( grep -B 1 "Default=1$" "$FPROFILE" | grep -v Default ) fi FCURPROF=$( echo "$FCURPROF" | cut -d"=" -f2 ) FHISTORY=$( find $HOME/.mozilla/firefox/"$FCURPROF" -type f -name "places.sqlite" ) FCOOKIES=$( find $HOME/.mozilla/firefox/"$FCURPROF" -type f -name "cookies.sqlite" ) FSITEDAT=$( find $HOME/.mozilla/firefox/"$FCURPROF" -type d -name "default" ) FCACHEDF=$( find $HOME/.cache/mozilla/firefox/"$FCURPROF" -type d -name "entries" ) echo; echo "Firefox is using profile: $FCURPROF" fi if [ -z "$THUNDERBIRD" ]; then echo echo "Thunderbird directory does not exist" else # Thunderbird file locations. First get the current Profile Name # The profiles are listed in 'profiles.ini'. # If profiles.ini does not contain the line 'Locked=1' then the current profile # is followed by the line 'Default=1'. If profiles.ini does contain 'Locked=1' # then the current profile is followed by the line 'Locked=1' # TPROFILE=$( find $HOME/.thunderbird/ -type f -name "profiles.ini" ) if grep -q "Locked=1$" "$TPROFILE"; then TCURPROF=$( grep -B 1 "Locked=1$" "$TPROFILE" | grep -v Locked ) else TCURPROF=$( grep -B 1 "Default=1$" "$TPROFILE" | grep -v Default ) fi TCURPROF=$( echo "$TCURPROF" | cut -d"=" -f2 ) THISTORY=$( find $HOME/.thunderbird/"$TCURPROF" -type f -name "places.sqlite" ) TCOOKIES=$( find $HOME/.thunderbird/"$TCURPROF" -type f -name "cookies.sqlite" ) TCACHEDF=$( find $HOME/.cache/thunderbird/"$TCURPROF" -type d -name "entries" ) echo; echo "Thunderbird is using profile: $TCURPROF" fi # MENU="" while [[ $MENU != "E" ]] && [[ $MENU != "e" ]]; do echo echo -n "[C]hrome, [F]irefox, T[hunderbird or [E]xit: " read -n1 MENU echo case $MENU in [Cc] ) ;; [Ff] ) ;; [Tt] ) ;; [Ee] ) ;; * ) echo; echo " Enter 'C/c', 'F/f', 'T/t' or 'E/e'" esac ######### # Chrome ######### while [[ $MENU == "C" ]] || [[ $MENU == "c" ]]; do pgrep -u $USER chrome > /dev/null if [[ $? -eq 0 ]]; then echo echo -n "Chrome Browser is open, do you wish to close it now? [Y/N]: " read -n1 YN echo if [[ $YN == "Y" ]] || [[ $YN == "y" ]]; then CPID=$( pgrep -u $USER chrome ) CPID=$( echo $CPID | cut -d" " -f1 ) kill -1 $CPID else echo echo " Cannot list or delete browser URLs if the browser is open" break fi fi if [ -z "$CHROME" ]; then echo echo "Chrome directory does not exist" break else CPROMPT="" echo echo -n "[D]elete, [L]ist or [E]xit: " read -n1 CPROMPT echo case $CPROMPT in [Dd] ) echo; echo " Chrome is using profile: $CCURPROF";; [Ll] ) echo; echo " Chrome is using profile: $CCURPROF";; [Ee] ) ;; * ) echo; echo " Enter 'D/d', 'L/l' or 'E/e'";; esac if [[ $CPROMPT == "E" ]] || [[ $CPROMPT == "e" ]]; then MENU=""; fi if [[ $CPROMPT == "D" ]] || [[ $CPROMPT == "d" ]]; then echo echo " Deleting Chrome URLs............." echo " =================================" sqlite3 "$CHISTORY" "select datetime(last_visit_time/1000000 + (strftime('%s', '1601-01-01')),'unixepoch'),url from urls; delete from urls;" | sed 's/^/ /' echo echo " Deleting Chrome Cookies.........." echo " =================================" sqlite3 "$CCOOKIES" "select datetime(creation_utc/1000000 + (strftime('%s', '1601-01-01')),'unixepoch'),host_key from cookies; delete from cookies;" | sed 's/^/ /' if [[ -d "$CCACHEDF" ]]; then echo echo " Deleting Chrome Cache............" echo " =================================" NUM=$( ls -1 "$CCACHEDF" | wc -l ) SIZ=$( du -sbh "$CCACHEDF" ) SIZ=$( echo $SIZ | cut -d" " -f1 ) echo " Files: $NUM Size: $SIZ" rm -r "$CCACHEDF" fi if [[ -d "$CCODECAC" ]]; then echo echo " Deleting Chrome Code Cache......." echo " =================================" NUM=$( ls -1 "$CCODECAC" | wc -l ) SIZ=$( du -sbh "$CCODECAC" ) SIZ=$( echo $SIZ | cut -d" " -f1 ) echo " Files: $NUM Size: $SIZ" rm -r "$CCODECAC" fi if [[ -f "$CVISITED" ]]; then echo echo " Deleting Visited Links..........." echo " =================================" rm "$CVISITED" fi if [[ -f "$CTOPSITS" ]]; then echo echo " Deleting Chrome Top Sites........" echo " =================================" rm "$CTOPSITS" fi fi if [[ $CPROMPT == "L" ]] || [[ $CPROMPT == "l" ]]; then echo echo " Current Chrome URLs.............." echo " =================================" sqlite3 "$CHISTORY" "select datetime(last_visit_time/1000000 + (strftime('%s', '1601-01-01')),'unixepoch'),url from urls;" | sed 's/^/ /' | more echo echo " Current Chrome Cookies..........." echo " =================================" sqlite3 "$CCOOKIES" "select datetime(creation_utc/1000000 + (strftime('%s', '1601-01-01')),'unixepoch'),host_key from cookies;" | sed 's/^/ /' |more if [[ -d "$CCACHEDF" ]]; then echo echo " Current Chrome Cache............." echo " =================================" NUM=$( ls -1 "$CCACHEDF" | wc -l ) SIZ=$( du -sbh "$CCACHEDF" ) SIZ=$( echo $SIZ | cut -d" " -f1 ) echo " Files: $NUM Size: $SIZ" fi if [[ -d "$CCODECAC" ]]; then echo echo " Current Chrome Code Cache............." echo " ======================================" NUM=$( ls -1 "$CCODECAC" | wc -l ) SIZ=$( du -sbh "$CCODECAC" ) SIZ=$( echo $SIZ | cut -d" " -f1 ) echo " Files: $NUM Size: $SIZ" fi fi CPROMPT="" fi done ########## # Firefox ########## while [[ $MENU == "F" ]] || [[ $MENU == "f" ]]; do pgrep -u $USER firefox > /dev/null if [[ $? -eq 0 ]]; then echo echo -n "Firefox Browser is open, do you wish to close it now? [Y/N]: " read -n1 YN echo if [[ $YN == "Y" ]] || [[ $YN == "y" ]]; then FPID=$( pgrep -u $USER firefox ) FPID=$( echo $FPID | cut -d" " -f1 ) kill -1 $FPID else echo echo " Cannot list or delete browser URLs if the browser is open" break fi fi if [ -z "$FIREFOX" ]; then echo echo "Firefox directory does not exist" break else FPROMPT="" echo echo -n "[D]elete, [L]ist or [E]xit: " read -n1 FPROMPT echo case $FPROMPT in [Dd] ) echo; echo " Firefox is using profile: $FCURPROF";; [Ll] ) echo; echo " Firefox is using profile: $FCURPROF";; [Ee] ) ;; * ) echo; echo " Enter 'D/d', 'L/l' or 'E/e'";; esac if [[ $FPROMPT == "E" ]] || [[ $FPROMPT == "e" ]]; then MENU=""; fi if [[ $FPROMPT == "D" ]] || [[ $FPROMPT == "d" ]]; then echo echo " Deleting Firefox History........." echo " =================================" sqlite3 "$FHISTORY" "SELECT datetime(moz_historyvisits.visit_date/1000000,'unixepoch'), moz_places.url FROM moz_places, moz_historyvisits WHERE moz_places.id = moz_historyvisits.place_id;" | sed 's/^/ /' sqlite3 "$FHISTORY" "delete from moz_historyvisits;" echo echo " Deleting Firefox Cookies........." echo " =================================" sqlite3 "$FCOOKIES" "select datetime(creationTime/1000000,'unixepoch'),host from moz_cookies; delete from moz_cookies;" | sed 's/^/ /' echo echo " Deleting Firefox Site Data......." echo " =================================" ls "$FSITEDAT" | grep http | sed 's/^/ /' find "$FSITEDAT" -name "http*" -type d -exec rm -r "{}" \; -prune echo echo " Deleting Firefox Cache..........." echo " =================================" if [[ $( ls -A "$FCACHEDF" ) ]]; then # Directory not empty NUM=$( ls -1 "$FCACHEDF" | wc -l ) SIZ=$( du -sbh "$FCACHEDF" ) SIZ=$( echo $SIZ | cut -d" " -f1 ) echo " Files: $NUM Size: $SIZ" find "$FCACHEDF" -type f -delete fi fi if [[ $FPROMPT == "L" ]] || [[ $FPROMPT == "l" ]]; then echo echo " Current Firefox History.........." echo " =================================" sqlite3 "$FHISTORY" "SELECT datetime(moz_historyvisits.visit_date/1000000,'unixepoch'), moz_places.url FROM moz_places, moz_historyvisits WHERE moz_places.id = moz_historyvisits.place_id;" | sed 's/^/ /' | more echo echo " Current Firefox Cookies.........." echo " =================================" sqlite3 "$FCOOKIES" "select datetime(creationTime/1000000,'unixepoch'),host from moz_cookies;" | sed 's/^/ /' | more echo echo " Current Firefox Site Data........" echo " =================================" ls "$FSITEDAT" | grep http | sed 's/^/ /' | more echo echo " Current Firefox Cache..........." echo " ================================" NUM=$( ls -1 "$FCACHEDF" | wc -l ) SIZ=$( du -sbh "$FCACHEDF" ) SIZ=$( echo $SIZ | cut -d" " -f1 ) echo " Files: $NUM Size: $SIZ" fi FPROMPT="" fi done ############## # Thunderbird ############## while [[ $MENU == "T" ]] || [[ $MENU == "t" ]]; do pgrep -u $USER thunderbird > /dev/null if [[ $? -eq 0 ]]; then echo echo -n "Thunderbird e-mail client is open, do you wish to close it now? [Y/N]: " read -n1 YN echo if [[ $YN == "Y" ]] || [[ $YN == "y" ]]; then TPID=$( pgrep -u $USER thunderbird ) TPID=$( echo $TPID | cut -d" " -f1 ) kill -1 $TPID else echo echo " Cannot list or delete Thunderbird URLs if the e-mail client is open" break fi fi if [ -z "$THUNDERBIRD" ]; then echo echo "Thunderbird directory does not exist" break else TPROMPT="" echo echo -n "[D]elete, [L]ist or [E]xit: " read -n1 TPROMPT echo case $TPROMPT in [Dd] ) echo; echo " Thunderbird is using profile: $TCURPROF";; [Ll] ) echo; echo " Thunderbird is using profile: $TCURPROF";; [Ee] ) ;; * ) echo; echo " Enter 'D/d', 'L/l' or 'E/e'";; esac if [[ $TPROMPT == "E" ]] || [[ $TPROMPT == "e" ]]; then MENU=""; fi if [[ $TPROMPT == "D" ]] || [[ $TPROMPT == "d" ]]; then echo echo " Deleting Thunderbird History........." echo " =====================================" sqlite3 "$THISTORY" "SELECT datetime(moz_historyvisits.visit_date/1000000,'unixepoch'), moz_places.url FROM moz_places, moz_historyvisits WHERE moz_places.id = moz_historyvisits.place_id;" | sed 's/^/ /' sqlite3 "$THISTORY" "delete from moz_historyvisits;" echo echo " Deleting Thunderbird Cookies........." echo " =====================================" sqlite3 "$TCOOKIES" "select datetime(creationTime/1000000,'unixepoch'),host from moz_cookies; delete from moz_cookies;" | sed 's/^/ /' echo echo " Deleting Thunderbird Cache..........." echo " =====================================" if [[ $( ls -A "$TCACHEDF" ) ]]; then # Directory not empty NUM=$( ls -1 "$TCACHEDF" | wc -l ) SIZ=$( du -sbh "$TCACHEDF" ) SIZ=$( echo $SIZ | cut -d" " -f1 ) echo " Files: $NUM Size: $SIZ" find "$TCACHEDF" -type f -delete fi fi if [[ $TPROMPT == "L" ]] || [[ $TPROMPT == "l" ]]; then echo echo " Current Thunderbird History.........." echo " =====================================" sqlite3 "$THISTORY" "SELECT datetime(moz_historyvisits.visit_date/1000000,'unixepoch'), moz_places.url FROM moz_places, moz_historyvisits WHERE moz_places.id = moz_historyvisits.place_id;" | sed 's/^/ /' | more echo echo " Current Thunderbird Cookies.........." echo " =====================================" sqlite3 "$TCOOKIES" "select datetime(creationTime/1000000,'unixepoch'),host from moz_cookies;" | sed 's/^/ /' | more echo echo " Current Thunderbird Cache..........." echo " ====================================" NUM=$( ls -1 "$TCACHEDF" | wc -l ) SIZ=$( du -sbh "$TCACHEDF" ) SIZ=$( echo $SIZ | cut -d" " -f1 ) echo " Files: $NUM Size: $SIZ" fi TPROMPT="" fi done done echo
Listed below is the Desktop Configuration file clear_browser_data.desktop
for KDE in Gentoo Linux that I created in the ~/Desktop/
directory. I downloaded a nice PNG icon from the Web, which I saved as ~/Pictures/Icons/broom.png
, although of course the Desktop Configuration file can be modified if the icon file were to be stored elsewhere. Obviously change the username accordingly.
[Desktop Entry] Comment[en_GB]=Clear Chrome, Firefox or Thunderbird caches and cookies Comment=Clear Chrome, Firefox or Thunderbird caches and cookies Exec=/home/fitzcarraldo/clear_browser_data.sh GenericName[en_GB]=Clear browser caches and cookies GenericName=Clear browser caches and cookies Icon=/home/fitzcarraldo/Pictures/Icons/broom.png MimeType= Name[en_GB]=clear_browser_data Name=clear_browser_data Path=/home/fitzcarraldo StartupNotify=true Terminal=true TerminalOptions= Type=Application X-DBUS-ServiceName= X-DBUS-StartupType=none X-KDE-SubstituteUID=false X-KDE-Username=fitzcarraldo
Listed below is the Desktop Configuration file clear_browser_data.desktop
for LXDE in Lubuntu 18.04 that I created in the ~/Desktop/
directory. I downloaded a nice PNG icon from the Web, which I saved as ~/Pictures/Icons/broom.png
, although of course the Desktop Configuration file can be modified if the icon file were to be stored elsewhere. Obviously change the username accordingly.
[Desktop Entry] Comment[en_GB]=Clear Chrome, Firefox or Thunderbird caches and cookies Comment=Clear Chrome, Firefox or Thunderbird caches and cookies Exec=/home/fitzcarraldo/clear_browser_data.sh GenericName[en_GB]=Clear browser caches and cookies GenericName=Clear browser caches and cookies Icon=/home/fitzcarraldo/Pictures/Icons/broom.png MimeType= Name[en_GB]=clear_browser_data Name=clear_browser_data Path=/home/fitzcarraldo StartupNotify=true Terminal=true TerminalOptions=\s--noclose Type=Application X-DBUS-ServiceName= X-DBUS-StartupType=none X-LXDE-SubstituteUID=false X-LXDE-Username=fitzcarraldo
Update April 5, 2020: I have modified Lines 24, 37 (a comment), 40 and 55 in the above script. The original Line 24 did not select the Chrome profile name correctly in another installation, the original Line 40 did not select the Firefox profile name correctly in another installation, and the search string for the Thunderbird profile was not tight enough in the original Line 55. The above script now works in three different installations.
Update April 25, 2020: Arrgghh! I installed Thunderbird in Lubuntu 18.04 and discovered that clear_browser_data.sh
did not find the Thunderbird cached files to delete. Unlike Thunderbird in Gentoo Linux on my main laptop, the file profiles.ini
for Thunderbird (but not Firefox) in my Lubuntu 18.04 installation contains a line ‘Locked=1
‘, and the actual profile used by Thunderbird in Lubuntu 18.04 is the profile specified in the line before ‘Locked=1
‘, not the profile specified in the line before ‘Default=1
‘. Someone I know uses Ubuntu 16.04 and he tells me Firefox in his installation is like this too. So, for reasons I don’t know, profiles.ini
contains ‘Locked=1
‘ in some Firefox or Thunderbird installations but not in others. Anyway, I have now modified the script to cater for both cases. It checks if the profiles.ini
files for Firefox and Thunderbird contain ‘Locked=1
‘ and, if they do, finds the currently-used profile from the line before ‘Locked=1
‘ instead of the line before ‘Default=1
‘. The line numbers mentioned in my previous update will be different now.