Kommentare
- Sie können verwenden oder anpassen dieses github.com/noqqe/bash-progress-bar , wenn es Ihnen helfen kann
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“