Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/09/2020, à 17: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 !  smile
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, à 12: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, à 20: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, à 20:21)

Hors ligne

#3 Le 25/09/2020, à 17: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, à 20: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.

cristobal78 a écrit :

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 26/09/2020, à 00:40

cristobal78

Re : (résolu) Tentative remplacement de ubuntu tweak

@ kamaris

ok je vois certaines choses sous un autre angle maintenant. smile
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, à 06:29

Compte supprimé

Re : (résolu) Tentative remplacement de ubuntu tweak

cristobal78 a écrit :

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 :

le net  a écrit :

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, à 06:37)

#7 Le 26/09/2020, à 10: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, à 18:23

cristobal78

Re : (résolu) Tentative remplacement de ubuntu tweak

donc merci à tous les deux. smile
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, à 18: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, à 23: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, à 12: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