Creați bara de progres în Bash

Creati Bara De Progres In Bash



Când este necesar să așteptați o perioadă fixă ​​de timp în timpul execuției unui script, este mai bine să creați o bară de progres pentru a informa utilizatorul să aștepte ceva timp. Bara de progres poate fi creată folosind un script Bash simplu sau folosind unele comenzi Linux încorporate, cum ar fi „cv”, „dialog”, etc. Metodele de creare a unei bare de progres folosind un script Bash sunt prezentate în acest tutorial.

Diferite exemple de creare a unei bare de progres în Bash

Diferitele moduri de implementare a unei bare de progres în Bash sunt prezentate în această parte a tutorialului.

Exemplul 1: implementați o bară de progres simplă fără nicio comandă

Creați un fișier Bash cu următorul script care afișează o bară de progres folosind caracterul „#” și comanda „sleep”. Comanda „printf” este folosită aici pentru a afișa bara de progres. Bara de progres este împărțită în patru părți. 25% este afișat după 1 secundă. 50% este afișat după 3 secunde. 75% este afișat după 2 secunde. 100% este afișat după 1 secundă.







#!/bin/bash

printf ' \n Așteptați să finalizați sarcina... \n \n '

#Așteptați 1 secundă

dormi 1

#Tipărește prima parte a barei de progres

printf „[##### ] 25%% finalizat. \r '

#Așteptați 3 secunde

dormi 3

#Tipărește a doua parte a barei de progres

printf „[########## ] 50%% finalizat. \r '

#Așteptați 2 secunde

dormi 2

#Tipărește a treia parte a barei de progres

printf „[############### ] 75%% finalizat. \r '

#Așteptați 1 secundă

dormi 1

#Imprimați ultimul din bara de progres

printf „[###################] 100%% finalizat. \r '

printf ' \n \n Sarcina finalizată. \n \n '

.



Următoarea ieșire apare după 1 secundă de la executarea scriptului:







Următoarea ieșire apare după 7 secunde de la executarea scriptului:



Exemplul 2: Implementați bara de progres folosind comanda „Pv”.

Forma completă a comenzii „pv” este „pipe viewer”. Este folosit pentru a monitoriza progresul datelor care sunt trecute prin conductă și pentru a afișa bara de progres în funcție de dimensiunea datelor. Această comandă nu este instalată implicit în sistem. Rulați următoarea comandă pentru a instala comanda „pv” înainte de a practica scriptul din acest exemplu:

$ sudo apt instalare pv

Trebuie să selectați un fișier de dimensiune mare care este copiat dintr-o locație în altă locație. Creați un fișier Bash cu următorul script care copiază fișierul „test.txt” din locația curentă în locația „/home/fahmida/temp/”. Comanda „pv” este folosită aici pentru a afișa bara de progres. Bara de progres este afișată în funcție de dimensiunea fișierului „test.txt”.

#!/bin/bash

ecou „Se copiează fișierul dintr-o locație în altă locație.”

#Așteptați 2 secunde

dormi 2

#Copiați fișierul la destinație

pisică test.txt | pv -s $ ( stat -c % s test.txt ) > / Acasă / înţelegere / temp / test.txt

ecou „Fișierul a fost copiat”.

Următoarea ieșire este afișată după finalizarea execuției scriptului:

Exemplul 3: Implementați bara de progres folosind comanda „Dialog”.

O altă modalitate de a implementa o bară de progres în Bash este utilizarea comenzii „dialog”. Această comandă poate fi folosită pentru a afișa o bară de progres arătătoare în terminal. Multe tipuri de widget-uri pot fi afișate folosind această bară de progres. Sarcina barei de progres care este afișată de această comandă poate fi controlată de scriptul Bash. Această bară de progres nu este instalată în sistem în mod implicit. Rulați următoarea comandă pentru a instala această bară de progres în sistem:

$ sudo apt instalare dialog

Creați un fișier Bash cu următorul script care afișează o bară de progres folosind comanda „dialog”. Sarcina de a copia fișierul „/etc/passwd” în locația „/home/fahmida/tempdir” este afișată folosind o bară de progres. Bara de progres este împărțită în cinci părți; fiecare parte este afișată după 2 secunde. Opțiunea –title este folosită în comanda „dialog” pentru a afișa titlul barei de progres. Opțiunea –gauge este utilizată în comanda „dialog” pentru a afișa bara de progres cu o înălțime de 10 linii și o lățime de 100 de caractere. Mesajul „În așteptarea finalizării sarcinii” este afișat deasupra barei de progres.

#!/bin/bash

#Inițializați contorul

curent_poz = 0

(

#Definește o buclă infinită

pentru ( ( ;; ) )

do

pisică <
delimitator

$current_pos

#Afișați valoarea curentă a contorului

cp /etc/passwd la /home/fahmida/tempdir ($current_pos%):

delimitator

EOF


#Măriți contorul cu 20

( ( current_pos+= douăzeci ) )

#Terminați din buclă când valoarea contorului este mai mare de 100

[ $current_pos -gt 100 ] && pauză

#Așteptați 2 secunde după fiecare creștere

dormi 2

Terminat

) | dialog --titlu „Se copiează fișierul...” --ecartament „Așteptăm finalizarea sarcinii” 10 100 0


Următoarea ieșire apare după 6 secunde de la executarea scriptului:


Următoarea ieșire apare după 10 secunde de la executarea scriptului:


Concluzie

Diferitele moduri de a dezvolta o bară de progres folosind un script Bash sunt prezentate în acest tutorial pentru a ajuta utilizatorii Bash să folosească bara de progres în programul lor.