Linux + kuinka luoda yksinkertainen edistymispalkki bashissa [duplicate]

Tähän kysymykseen on jo annettu vastauksia :

Kommentit

Vastaa

Tämä on melko yksinkertaista tehdä yksinkertaisesti 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 

Ensimmäinen argumentti prog on prosenttiosuus, muut tulostetaan etenemispalkin jälkeen. Funktion muuttuja w ohjaa palkin leveyttä. Tulosta uusi viiva, kun olet valmis, toiminto ei tulosta sitä.


Toinen mahdollisuus olisi käyttää pv -työkalua. Se on tarkoitettu putkiston läpimenon mittaamiseen, mutta voimme luoda sen sille:

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

Täällä, -pt sallii etenemispalkin ja ajastimen, -s 100 asettaa kokonaislähdekoon, ja mikä tahansa funktion sisällä tulostettava tulos lasketaan tähän kokoon.

Vastaa

Yleensä voit toteuttaa tämän korvaamalla rivi. Palaa alkuun \r rivi kirjoittamatta \n päätelaitteeseen.

Kirjoita \n, kun olet tehnyt linjan eteenpäin.

Käytä echo -ne:

  • ei tulosta \n ja
  • tunnistamaan pakosarjat, kuten \r.

Tässä ”demo:

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

MUOKKAA: CURL: n mukana tulee etenemispalkki: --progress-bar, eikö se ole mitä haluat?

otettu vastauksesta t o https://stackoverflow.com/questions/238073/how-to-add-a-progress-bar-to-a-shell-script

Löysin, että Googlen kanssa ensimmäinen vastaus seuraavilla hakutermeillä: ”edistyksellinen edistymispalkki”

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *