[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Commande find



Bonjour David,

David Martin, on 2020-11-26 15:40:59 +0100:
> #!/bin/bash

Il vaut mieux arrêter le script immédiatement si une étape
finit en erreur de manière inattendue.  Or ce n'est pas le
comportement par défaut du shell.  Pour activer ce comportement,
une bonne pratique est d'activer cette option "-e" quasiment
juste après le shebang :

	set -e

Les options -v et -x sont intéressantes à utiliser au moment de
rédiger le script, pour voir quand se lancent les commandes, et
vérifier que les variables ont des valeurs cohérentes,
respectivement.

[...]
> # liste des noms de répertoire à mettre à jour séparé d'un pipe :"
> #
> DIR="0|1|2|3|4|5|6|7|8|9|netlogon|backup|eole|mail"
[...]
> echo "Liste des exclusions : "
> echo "$DIR"

Je pense qu'à ce point du script, ce pourrait être une bonne
idée de lancer :

	find -iname Mozilla | egrep -v "$DIR"

Ça devrait vous permettre d'y voir plus clair dans ce qui va
effectivement sauter, au lieu de juste voir quelle expression
est utilisée pour le filtrage.  En tant qu'utilisateur du
script, je pense que je préfère voir ce qui va sauter, plutôt
que de voir comment.

Éventuellement, vous pouvez enregistrer la liste dans un
fichier, avec "tee", pour la réutiliser au moment d'effacer, au
lieu de relancer un "find", coûteux en opérations d'entrées et
sorties, une seconde fois.

> while true; do
> read -p "Etes vous d'accord avec la liste d'exclusion ?" on
> case $on in
> [Oo]* ) echo "Suppression en cours..." ;
>        find -iname Mozilla | egrep -v "$DIR" | xargs rm -Rvf > delmozilla.log;
                                        ^~~~~^
Je serais à votre place, je protègerais la variable avec des
double quotes, comme ci-dessus.  DIR est amenée à stocker des
expressions rationelles, et ce genre de contenu peut facilement
être interprété par le shell d'une façon inattendue.

Je ne sais pas si ça va résoudre votre problème, mais si ça peut
vous aider à y voir plus clair...  Plus largement, ça vaudrait
le coup de voir pourquoi ce genre de ménage est nécessaire.
Admettons que je sois utilisateur de vos systèmes, s'il devait y
avoir une passe de cet outil dans mon dos, ça m'embêterait
beaucoup de perdre mon historique.

Bonne fin de journée,  :)
-- 
Étienne Mollier <etienne.mollier@mailoo.org>
Fingerprint:  8f91 b227 c7d6 f2b1 948c  8236 793c f67e 8f0d 11da
Sent from /dev/pts/1, please excuse my verbosity.

Attachment: signature.asc
Description: PGP signature


Reply to: