Petit panneau intouchable de progrès en pseudo-GUI

Post Reply
Message
Author
musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

Petit panneau intouchable de progrès en pseudo-GUI

#1 Post by musher0 »

Bonjour.

Mieux vaut tard que jamais, dit le vieux motard qu'elle aimait... ;)

J'ai cherché le fil en français pour le script de barre de transmission dont
Fabrice est l'auteur et auquel Argolance a contribué; j'aurais rabouté mon
script à ce fil. Mais motte, rien trouvé.

Donc je dois créer ce nouveau fil pour ma trouvaille.

Flanquez les deux scripts ci-dessous dans un chemin d'exécutables,
disons, /root/my-applications/bin.

Maintenant supposons que vous voulez voir le progrès de l'opération:

Code: Select all

lzip -fk2 puduansave-HaveCharacter3.2fs
. Vous tapez

Code: Select all

lanceur-ligne-de-points.sh o lzip -fk2 puduansave-HaveCharacter3.2fs
Notez que le script < ligne-de-points > tout seul n'a pas grande utilité,
sinon marquer le temps qui passe. Notez aussi qu'il ne s'arrête, une fois
lancé, qu'en plaçant un fichier bidon nommé « stop » dans /tmp.
Ex.

Code: Select all

>/tmp/stop
En espérant que ce sera utile à quelqu'un. Si vous avez des questions au
sujet de ces deux scripts, n'hésitez pas à me les poser ci-dessous. Mais
prenez la peine de lire les commentaires dans les scripts avant, s.v.p.

À+

~~~~~~~~~~~~~~~~~~

Code: Select all

#!/bin/bash
# /opt/local/bin/lanceur-ligne-de-points.sh
#
# Objectif : intégrer une ligne de progrès à une commande
# ---------- qui prend du temps à s'exécuter.
#
# Requiert : ligne-de-points.sh
#
# Usage : lanceur-ligne-de-points.sh < caractère pour marquer le progrès >
# < commande > < ses paramètres >.
#
# Important : le caractère marquant le progrès doit être en position 1
# ----------- sur la lighe de commande.
#
# Exemples :
# lanceur-ligne-de-points.sh o lzip -fk2 puduansave-HaveCharacter3.2fs
# lanceur-ligne-de-points.sh . rsync -avz puduansave-HaveCharacter3.2fs /mnt/sdb2
#
# (c) musher0, 3 avril 2019. GPL3
####
# Préparation
Q="$@"

# de la commande
long="${#Q}" # echo $long
CmD="${Q:2:$long}" # echo $CmD

# de la ligne de progrès
P="${Q:0:1}" # echo $P
TrnsP="tr -tint NavajoWhite1 -sh 67"
ClR="fg gold -bg Sienna4 -cr snow"
GeoM="g 42x6-111+111"
AutreS="sb -b 25 -bc -uc -bl"
# Attention : le paramètre < -bl > empêche toute interaction
# ----------- avec cette console.
FadE="fade 70 -fadecolor "#94A495"" # Effet tamisé.

# Action
urxvt -$TrnsP -$FadE -$ClR -$GeoM +$AutreS -e ligne-de-points.sh $P &
$CmD
>/tmp/stop # Commutateur pour ligne-de-points.sh,
# ---------- nécessaire avec le param. < -bl > d'urxvt.

Code: Select all

#!/bin/ash
# /opt/local/bin/ligne-de-points.sh
#
# Objectif -- Imprimer dans le terminal une ligne
# ------------- de points pendant un long processus.
#
# Usage --  Incorporer sur une ligne convenable du script
# ------------ principal, en arrière-plan, JUSTE AVANT
# ------------ la commande lançant le long processus.
#
# Exemple -- < ligne-de-points.sh & # Noter l'importante éperluette !
# --------------- < cp -f Gargantuesque_Fichier Répertoire_de_Destination
#
# Inspiré des idées exposées à
# https://stackoverflow.com/questions/238073/ \
# how-to-add-a-progress-bar-to-a-shell-script.
# Relevé le 14 mars 2019 en soirée.
#
# (c) musher0, 15 mars 2019. GPL3.
####
# Préparation
P="$1"
[ "$P" = "" ] && P="."
StoP () { if [ -f /tmp/stop ];then break;exit;fi ; }
# Commutateur
rm -f /tmp/stop # Ce drapeau ne doit pas exister au départ. On
# peut le créer à partir d'une autre console ou d'un gest. de fen.

echo -e "\t\e[1;4;32mProgrès de l'opération\e[0m"
for j in `seq 10`;do # Minutes
     for i in `seq 40`;do # Secondes
# « `seq 30` » ici et « sleep 2s » ci-dessous = 30 fois par minute,
# c.-à-d. un point toutes les deux secondes.
#
# Si on veut voir apparaître un point à toutes les secondes,
# mettre « `seq 60` » ici, et « sleep 1s » à la ligne ci-dessous.
#
#        P="."
# On peut mettre autre chose qu'un point, le caractère « ~ », par ex.
          /bin/echo -ne "$P" # Utilise l'utilitaire echo et non la fonction de bash.
# Le paramètre < -n > signifie : « Imprime la chaîne suivante sur la même ligne. »
#
# Le paramètre < -e > signifie : « Accepte les séquences ANSI ». Car
# on peut colorer cette ligne à partir du script principal en spécifiant
# des séquences de couleur ANSI.
#
# Par ex., envoyer la commande < echo - "\e[33m" > avant de passer la
# main au présent script fera qu'il imprimera des points de couleur or. En soi,
# le présent script adopte les couleurs par défaut de la console qui le lance.
#
          sleep 1.5s # 2s # 1s
          StoP
     done
     echo -e "\e[1L\e[K\e[1A"
# Le code ANSI « Échapp. 1 L » pousse d'une ligne vers le bas
# l'écriture qu'il pourrait déjà y avoir sur une nouvelle ligne dont
# la ligne de progrès aurait besoin.
     StoP
done
echo -e "\e[0m" # En-cas pour la fin, afin d'éviter du barbouillage dans
# la console. Annule les séquences de couleur ANSI si le script principal
# en a utilisé. En d'autres mots, cette commande restaure les couleurs
# de départ de la console.
Attachments
ligne-de-points-1.jpg
(182.76 KiB) Downloaded 207 times
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

User avatar
Argolance
Posts: 3767
Joined: Sun 06 Jan 2008, 22:57
Location: PORT-BRILLET (Mayenne - France)
Contact:

#2 Post by Argolance »

Bonjour,
J'ai cherché le fil en français pour le script de barre de transmission dont
Fabrice est l'auteur et auquel Argolance a contribué; j'aurais rabouté mon
script à ce fil. Mais motte, rien trouvé.
Il ne me semble pas qu'il y ait un fil sur la partie francophone mais deux, plus ou moins liés sur la partie anglophone: Merci pour ces srcipts.

Cordialement.

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#3 Post by musher0 »

Tiens, une réaction. ;)

Merci !

J'allais oublier : en plus de mes scripts, si la commande dispose d'un
mode « verbeux », utilisez-le ? Plus on a d'infos sur un processus,
mieux c'est.

Exemples :
-- la commande zip offre sa propre ligne de progrès si on y ajoute le
paramètre < -dd > : zip -9ry -dd machin.zip Machin/

-- lz4 -9fv. pupsave_MachinChose.sfs -- Le « v », c'est pour verbeux.

-- idem pour rsync dans la commande < rsync -avz >.

Enfin, dans le panneau de progrès, chaque ligne représente une minute.

À+
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

Post Reply