Как да създадем лентата за прогреса-напредъка в 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
Описание на пакета
Това приложение предоставя метод за показване на няколко различни типа диалогови прозорци от шел скриптове.
Показва удобни за потребителя диалогови прозорци от шел скриптове.
Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу:
Donate ☕️ Дарете с PayPalDonate 💳 Дарете с Revolut