Linux + wie man einen einfachen Fortschrittsbalken in der Rolle bash [duplicate]

Diese Frage hat hier bereits Antworten :

Kommentare

Antwort

Dies ist in einfachem Bash ziemlich einfach:

#!/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 

Das erste Argument für prog ist der Prozentsatz, alle anderen werden nach dem Fortschrittsbalken gedruckt. Die Variable w in der Funktion steuert die Breite des Balkens. Drucken Sie eine neue Zeile, nachdem Sie fertig sind, die Funktion druckt keine.


Eine andere Möglichkeit wäre die Verwendung des Tools pv. Es ist zum Messen des Durchsatzes einer Pipeline gedacht, aber wir können einen dafür erstellen:

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

Hier -pt aktiviert den Fortschrittsbalken und den Timer. -s 100 legt die Gesamtausgabegröße fest, und alles, was wir innerhalb der Funktion drucken, wird gegen diese Größe angerechnet.

Antwort

Im Allgemeinen können Sie dies implementieren, indem Sie eine Zeile überschreiben. Verwenden Sie \r, um zum Anfang von zurückzukehren die Zeile ohne \n in das Terminal zu schreiben.

Schreiben Sie \n, wenn Sie mit dem Vorrücken der Zeile fertig sind.

Verwenden Sie echo -ne, um:

  • \n und
  • zum Erkennen von Escape-Sequenzen wie \r.

Hier „eine Demo:

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

BEARBEITEN: Jetzt wird cURL mit einem Fortschrittsbalken geliefert: --progress-bar, ist das nicht das, was Sie wollen?

aus Antwort t entnommen o https://stackoverflow.com/questions/238073/how-to-add-a-progress-bar-to-a-shell-script

Bei Google wurde die erste Antwort mit den folgenden Suchbegriffen gefunden: „Bash Progress Bar“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.