Как да създадем лентата за прогреса-напредъка в Bash?
Bash е мощен и универсален език за програмиране на команден ред, който се използва широко в Linux и Unix системите. Лентата за напредъка (progress bar) е полезен инструмент, който може да се използва за да даде на потребителите необходимата информация за напредъка на извършването на задачи.
В тази статия ще ви покажем как да създадете лентата за напредъка в Bash.
Ще започнем като ви изброим необходимите стъпки за създаването на лентата за прогреса:
Определете максималната стойност на лентата за прогреса – това ще излезе от продължителността на задачата, която трябва да бъде измерена.
Създайте функция, която ще изчисли процента на завършеност на задачата.
Извършете изчисленията и изпечатайте лентата за прогреса върху екрана.
Това е най-основната рамка за създаване на лентата за прогреса, но ще ви дадем и няколко примера, които да може да последвате, за да го направите по-лесно.
Пример 1:
В този пример ще използваме функция print_progress(), която ще приеме два аргумента: текущото състояние на лентата за напредъка и максималното състояние на лентата за напредъка.
#!/bin/bash
print_progress() {
current_status="$1"
max_status="$2"
percentage=$((current_status * 100 / max_status))
echo -ne "Progress: $percentage% \r"
}
# Тест
for i in {1..100}
do
sleep 0.1
print_progress "$i" 100
doneТук ще броят от 1 до 100 и подаваме i като текущо състояние на лентата за напредъка и максималното състояние на лентата за напредъка е 100. Функцията print_progress() ще изчисли процента на завършеност на задачата, като я повишава на всеки глед от 100 – т.е. на всеки глед ще увеличава стойността и спрямо това, коя стъпка е, ще променя лентата за напредъка.
Пример 2:
В този пример ще използваме инструментите tput и printf, за да покажем лентата за напредъка на определени позиции в терминала.
#!/bin/bash
PROGRESS_BAR_WIDTH=80
for i in {1..100}
do
percent=$((i * 100 / 100))
bar=$(seq -s "─" $(($i/2)) | sed 's/[0-9]//g')
printf "[ %-${PROGRESS_BAR_WIDTH}s ] ${percent}%% \r" "${bar}"
doneВ този пример използваме PROGRESS_BAR_WIDTH, което е ширина на лентата за напредъка. С помощта на на seq и sed използваме код, за да построим лентата за напредъка. С функцията printf изпринтваме бара. В последния ред ще се отпечата процента на завършеност.
Пример 3:
Друг начин за внедряване на лента за напредък в Bash е използването на командата dialog
Тази команда може да се използва за показване на добре изглеждаща лента за прогрес в терминала.
Тази лента за прогрес не е инсталирана в системата по подразбиране. Изпълнете следната команда, за да инсталирате тази лента за напредък в системата:
sudo apt-get update -y
sudo apt install dialogОписание на пакета
Това приложение предоставя метод за показване на няколко различни типа диалогови прозорци от шел скриптове.
Показва удобни за потребителя диалогови прозорци от шел скриптове.


