Linux + comment créer une barre de progression simple dans le rôle bash [duplicate]

Cette question a déjà des réponses ici :

Commentaires

Réponse

Ceci est assez simple à faire en simple Bash:

#!/bin/bash # progress bar function prog() { local w=80 p=$1; shift # create a string of spaces, then change them to dots printf -v dots "%*s" "$(( $p*$w/100 ))" ""; dots=${dots// /.}; # print those dots on a fixed-width space plus the percentage etc. printf "\r\e[K|%-*s| %3d %% %s" "$w" "$dots" "$p" "$*"; } # test loop for x in {1..100} ; do prog "$x" still working... sleep .1 # do some work here done ; echo 

Le premier argument de prog est le pourcentage, tous les autres sont imprimés après la barre de progression. La variable w de la fonction contrôle la largeur de la barre. Imprimez une nouvelle ligne une fois que vous avez terminé, la fonction nen affiche pas une.


Une autre possibilité serait dutiliser loutil pv. Il est destiné à mesurer le débit dun pipeline, mais nous pouvons en créer un:

for x in {1..100} ; do sleep .1 # do some work here printf . done | pv -pt -i0.2 -s100 -w 80 > /dev/null 

Ici, -pt active la barre de progression et le minuteur, -s 100 définit la taille de sortie totale, et tout ce que nous imprimons dans la fonction compte dans cette taille.

Réponse

En général, vous pouvez implémenter cela en écrasant une ligne. Utilisez \r pour revenir au début de la ligne sans écrire \n dans le terminal.

Écrivez \n lorsque vous avez terminé davancer la ligne.

Utilisez echo -ne pour:

  • ne pas imprimer \n et
  • pour reconnaître les séquences déchappement telles que \r.

Voici « une démo:

echo -ne "... (33%)\r" sleep 1 echo -ne "...... (66%)\r" sleep 1 echo -ne ".......... (100%)\r" echo -ne "\n" 

EDIT: Maintenant, cURL est livré avec une barre de progression: --progress-bar, nest-ce pas ce que vous voulez?

tiré de la réponse t o https://stackoverflow.com/questions/238073/how-to-add-a-progress-bar-to-a-shell-script

Jai trouvé cela avec Google, première réponse, avec les termes de recherche suivants: « barre de progression bash »

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *