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.