Watael a écrit…PS : c'est pour quoi faire printf '\033[1M' ? …
Ça sert à effacer la ligne courante (celle affichant la question) et revenir au début de la ligne,
ce qui fait qu'il ne restera que les messages de la commande
snap remove …
qui indiqueront les
snap qui ont été effectivement désinstallés.
XTerm Control Sequences
…
CSI Ps M Delete Ps Line(s) (default = 1) (DL).
…
ESCAPE SEQUENCES
…
A.III.7 Insertion / Deletion
…
Delete Line (DL) CSI Pn M Deletes Pn lines starting at the line with the cursor. Lines within the scroll area and below the cursor move up, and blank lines are added at the bottom of the scroll region. The cursor is reset to the first column.
Esc [ pn M
…
=======
… et d'ailleurs, il faudrait modifier la ligne de commande concernée
pour la remplacer par :
read -u1 -n1 -p "Remove $snapname $revision ? [y/N]"; printf '\033[1M'
Et puis il y a aussi le fait que si on répond en appuyant sur la touche entrée,
l'effacement ne se fait pas où il faudrait puisqu'il y a un retour à la ligne qui est entré
du coup, ça efface la ligne en dessous, qui suit le retour à la ligne entré
et pour régler ce problème, il faut inhiber l'affichage du caractère qui est entré (comme réponse à la question)
en utilisant l'option
s (<=> Silent mode) de la commande
read
=======
Ce qui donne (en reprenant les très bons conseils de
Watael => Merci beaucoup 🙂 ) :
snapsPurge(){
LANG=C snap list --all \
| while read -ra snap
do
if [[ ${snap[@]} == *disabled ]]
then
snapname=${snap[0]}
revision=${snap[2]}
read -u1 -n1 -s -p "Remove $snapname $revision ? [y/N]"; printf '\033[1M'
[[ $REPLY = [oOyY] ]] && sudo snap remove "$snapname" --revision="$revision"
fi
done
}