#1 Le 23/09/2020, à 16:13
- cristobal78
(résolu) Tentative remplacement de ubuntu tweak
Bonjour à tous,
Ubuntu Tweak n'étant plus maintenu je me suis lancé dans une tentative de le remplacer au moins partiellement.
J'ai donc mis au point ce script qui sous mes PC en 16.04 fait 95 % au moins de ce que fait Ubuntu Tweak.
J'ai pu le constater en lançant mon script puis en regardant ce qui restait à nettoyer selon Ubuntu Tweak.
Voici le script :
#!/bin/bash
###################################################
# nom : myclean
# remplacer "ubuntu tweak" qui n'est plus maintenu
###################################################
# variables #
tirets="---------------------------------------------------------------------------"
messdeb="Programme de nettoyage pour 16.04 LTS : remplace <ubuntu tweak> qui n'est plus maintenu"
pourtous="1/- Nettoyage accessible à tous les utilisateurs"
superuser="2/- Nettoyage nécessitant les droits administrateur"
termine=".................. opération terminée .................."
messfin="Votre ordinateur est totalement nettoyé."
appuyer="Appuyer maintenant sur la touche << Entrée >>"
cheminff="/home/$USER/.cache/mozilla/firefox/ff.default"
cheminchromium="/home/$USER/.cache/chromium/Default/"
chemintb="/home/$USER/.cache/thunderbird/tb.default"
chemintn="/home/$USER/.cache/thumbnails"
cheminsw="/home/$USER/.cache/software-center"
# fonction #
separ() { echo "$termine"; }
test_paq0() { paquet=$1 ; dpkg-query -l | grep -qE "^.i *$paquet" 2> /dev/null ; }
### script ###
cd $HOME
# 1. Applis & Personnel #
echo $messdeb ; echo $tirets ; echo $pourtous; echo $tirets
# 1.1 firefox
echo "Nettoyage du cache FFox"
test_paq0 firefox
if [ $? -ne 0 ] ; then echo "Firefox non installé" ; else echo "Firefox est installé"
cd $cheminff
rm -r OfflineCache/* startupCache/* 2>/dev/null
if [ $? -eq 1 ]; then echo "Rien à supprimer"; fi ; separ
fi ; echo
# 1.2 chromium
echo "Nettoyage du cache Chromium"
test_paq0 chromium-browser #2>/dev/null
if [ $? -ne 0 ] ; then echo "Chromium non installé" ; else echo "Chromium est installé"
cd $cheminchromium
rm -r Cache/* "Code Cache"/* 2>/dev/null
if [ $? -eq 1 ]; then echo "Rien à supprimer"; fi ; separ
fi ; echo
# 1.3 thunderbird
echo "Nettoyage du cache TBird"
test_paq0 thunderbird
if [ $? -ne 0 ] ; then echo "Thunderbird non installé" ; else echo "Thunderbird est installé"
cd $chemintb
rm -r cache2/* startupCache/* safebrowsing/* 2>/dev/null
if [ $? -eq 1 ]; then echo "Rien à supprimer"; fi ; separ
fi ; echo
# 1.4 software-center
echo "Nettoyage cache de la logithèque"
test_paq0 software-center
if [ $? -ne 0 ] ; then echo "Non installé" ; else echo "La Logithèque est installée"
cd $cheminsw
rm -r download-cache/* icons/* piston-helper/* rnrclient/* software-center-agent.db.tmp/* WebKitCache/* reviews.ubuntu.com_reviews_api_1.0_review-stats-pkgnames.p__5.3.db.dbenv/* 2>/dev/null
if [ $? -eq 1 ]; then echo "Rien à supprimer"; fi ; separ
fi ; echo
# 1.5 thumbnails
echo "Nettoyage des images miniatures (thumbnails)"
cd $chemintn
rm -r normal/* fail/* large/* 2>/dev/null ; separ
echo
# 2. Système #
echo $tirets ; echo $superuser ; echo $tirets
if [ "$USER" = "zzz" ] # remplacer "zzz" par identifiant du compte
then
echo ; echo "<< Purge des anciens noyaux >>" ; sudo purge-old-kernels 2>/dev/null ; separ
echo ; echo "<< Vide le cache : clean >>" ; sudo apt-get clean 2>/dev/null ; separ
echo ; echo "<< Purge des paquets périmés : autoclean >>" ; sudo apt-get autoclean 2>/dev/null ; separ
echo ; echo "<< Exécution de remove >>" ; sudo apt-get remove 2>/dev/null ; separ
echo ; echo "<< Suppr. des paquets inutiles : autoremove >>" ; sudo apt-get autoremove --purge -y 2>/dev/null; separ
echo "" ; echo $messfin ; echo $appuyer ; read -r keypress
else
echo "*** !!! Droits insuffisants !!! ***" ; echo "Fin du programme de nettoyage" ; echo $appuyer ; read -r keypress
fi
Si des cador du codage ont des modifications / corrections à me proposer je suis archi preneur !
En plus j'envisage aussi d'utiliser ce script aussi sous 18.04 LTS mais j'avoue que là je ne suis pas sur de ne pas faire de bêtises car ce qui est bon en 16.04 ne l'est peut être pas en 18.04.
Dernière modification par cristobal78 (Le 30/09/2020, à 11:04)
Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE
Hors ligne
#2 Le 24/09/2020, à 19:53
- kamaris
Re : (résolu) Tentative remplacement de ubuntu tweak
Il ne faut pas abuser du 2>/dev/null : si les commandes ont quelque chose à dire, à fortiori sur la sortie d'erreur, c'est qu'il y a une raison, et qu'il y a probablement un meilleur moyen de les faire taire.
Par exemple, rm ne devrait pas avoir à dire qu'un fichier n'existe pas, car ce test aurait dû être fait en amont.
De plus, que se passera-t-il si, au lieu de dire que le fichier n'existe pas, rm dit qu'elle ne peut pas le supprimer, ou qu'elle rencontre un autre problème ?
Tu ne le sauras pas, et l'interprétation que tu fais de son code retour différent de 0 sera fausse.
Autres remarques :
Il est inutile et potentiellement piégeux de changer de répertoire, il vaut mieux passer aux commandes concernées un chemin complet.
Il vaut mieux aussi tester directement le code retour des commandes plutôt que de passer par $?.
Donc par exemple :
shopt -s nullglob
if test_paq0 firefox; then
a_supprimer=("$cheminff/OfflineCache/"* "$cheminff/startupCache/"*)
if ((${#a_supprimer[@]})); then
rm -r "${a_supprimer[@]}"
else
echo "Rien à supprimer"
fi
fi
Dernière modification par kamaris (Le 25/09/2020, à 19:21)
Hors ligne
#3 Le 25/09/2020, à 16:50
- cristobal78
Re : (résolu) Tentative remplacement de ubuntu tweak
salut kamaris
Grand merci pour toutes remarques.
Je vais commencer par supprimer les 2>/dev/null et voir comment ça marche sans eux et surtout comment faire si comme tu le rappelles la commande "rm" ne trouve pas de fichiers à supprimer.
Changement de répertoire : tu veux dire qu'il ne faut pas que je commence la section script proprement dite par cd $HOME ? C'est ça ?
Dans ton exemple tu commences par :
shopt -s nullglob
mais je ne comprends pas ce que ça veut dire ou faire.
Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE
Hors ligne
#4 Le 25/09/2020, à 19:21
- kamaris
Re : (résolu) Tentative remplacement de ubuntu tweak
Le shopt -s nullglob indique à bash de renvoyer une chaine de caractères vide lors des développements de chemins lorsqu'aucun fichier ne correspond, car sinon il renvoie la chaine donnée en entrée :
$ echo nom-de-fichier-bidon*
nom-de-fichier-bidon*
$ shopt -s nullglob
$ echo nom-de-fichier-bidon*
$
C'est ce qui permet de tester ensuite facilement la présence de fichiers correspondant au motif à supprimer (indépendamment de la forme particulière de ce motif), pour ne pas que rm ait à le faire alors que ce n'est pas son travail :
a_supprimer=("$cheminff/OfflineCache/"* "$cheminff/startupCache/"*)
Si aucun fichier ne correspond à ces deux motifs, le tableau a_supprimer sera vide, ${#a_supprimer[@]} vaudra 0, et donc ((${#a_supprimer[@]})) sera faux.
Changement de répertoire : tu veux dire qu'il ne faut pas que je commence la section script proprement dite par cd $HOME ? C'est ça ?
Pas seulement : toutes les commandes cd que tu utilises peuvent être supprimées, en fournissant aux commandes exécutées dans un répertoire particulier un chemin absolu au lieu d'un chemin relatif.
C'est ce que j'ai fait dans l'exemple ci-dessus, en supprimant le cd $cheminff (qui devrait d'ailleurs s'écrire cd "$cheminff").
Cela dit, je me rends compte que j'avais oublié un bout de ton code dans cet exemple* : voici un exemple complet de remplacement pour le premier point # 1.1 firefox :
echo "Nettoyage du cache FFox"
shopt -s nullglob
if test_paq0 firefox; then
echo "Firefox est installé"
a_supprimer=("$cheminff/OfflineCache/"* "$cheminff/startupCache/"*)
if ((${#a_supprimer[@]})); then
rm -r "${a_supprimer[@]}"
else
echo "Rien à supprimer"
fi
else
echo "Firefox non installé"
fi
--
* cet oubli m'avait fait faire une petite erreur de test que j'ai corrigée dans mon précédent post.
Hors ligne
#5 Le 25/09/2020, à 23:40
- cristobal78
Re : (résolu) Tentative remplacement de ubuntu tweak
@ kamaris
ok je vois certaines choses sous un autre angle maintenant.
Ne serait ce que le coup des chemins qui est effectivement lourdingue dans mon script.
Par contre j'ai essayé de comprendre shopt et nullglob avec le man mais je n'ai rien trouvé avec le man : "aucune entrée de manuel ..."
C'est normal ?
Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE
Hors ligne
#6 Le 26/09/2020, à 05:29
- Compte supprimé
Re : (résolu) Tentative remplacement de ubuntu tweak
cript.
Par contre j'ai essayé de comprendre shopt et nullglob avec le man mais je n'ai rien trouvé avec le man : "aucune entrée de manuel ..."
C'est normal ?
Bonjour,
Tu as des infos sur shopt dans l'aide help:
help shopt
shopt -s nullglob active l'option nullglob du shell (par défaut inactivée)
Pour ce qui est de nullglob, sur le net(rien vu dans l'aide interne) tu pourrais lire :
nullglob signifie qu’un modèle ne correspondant à aucune entrée sera remplacé par une chaîne vide et non par le modèle lui-même
http://aral.iut-rodez.fr/fr/sanchis/ens … 04s03.html
Dernière modification par Compte supprimé (Le 26/09/2020, à 05:37)
#7 Le 26/09/2020, à 09:36
- kamaris
Re : (résolu) Tentative remplacement de ubuntu tweak
Oui, shopt est une commande interne à bash : tu trouveras donc sa documentation dans man bash, ou bien via help (elle-même commande interne).
Hors ligne
#8 Le 27/09/2020, à 17:23
- cristobal78
Re : (résolu) Tentative remplacement de ubuntu tweak
donc merci à tous les deux.
J'ai modifié le script. J'ai également supprimé ce qui se rapportait au nettoyage de la logithèque.
Mais vous ne m'avez pas confirmé (ou pas ?) que les suppressions que provoquent mon script sans pb sous 16.04 LTS seront sans danger aussi pour une 18.04 LTS.
Dernière modification par cristobal78 (Le 27/09/2020, à 17:23)
Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE
Hors ligne
#9 Le 27/09/2020, à 22:42
- kamaris
Re : (résolu) Tentative remplacement de ubuntu tweak
À regarder rapidement, je ne vois pas ce qui pourrait poser problème lors du passage d'une 16.04 à une 18.04, mais le plus sage est peut-être de tester d'abord en mettant des options type --dry-run quand elles existent ou des echo devant les commandes, pour voir ce que ça donne avant de se lancer.
Juste un truc : je trouve dangereux d'utiliser -y avec apt autoremove : si jamais ton cache apt est mal en point et qu'apt se met à dire n'importe quoi au niveau des dépendances, tu risques de lancer la suppression de pleins de paquets, et de casser complètement ton système.
Hors ligne
#10 Le 30/09/2020, à 11:03
- cristobal78
Re : (résolu) Tentative remplacement de ubuntu tweak
je vais testé sur 18.04 en prenant les précautions suggérées par Kamaris.
Je passe en "résolu".
Merci encore pour tous les conseils prodigués ici.
Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE
Hors ligne