ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как создать индикатор выполнения в Bash

Когда требуется подождать фиксированное количество времени во время выполнения скрипта, лучше создать индикатор выполнения, чтобы информировать пользователя о том, что нужно подождать некоторое время. Индикатор выполнения можно создать с помощью простого сценария Bash или некоторых встроенных команд Linux, таких как «cv», «dialog» и т. д. В этой статье показаны методы создания индикаторов выполнения с использованием сценария Bash.

 

Различные примеры создания индикатора выполнения в Bash

В этой части стать показаны различные способы реализации индикатора выполнения в Bash.

Пример 1: реализация простого индикатора выполнения без какой-либо команды

Создайте файл Bash со следующим сценарием, который отображает индикатор выполнения с использованием символа «#» и команды sleep. Команда printf используется здесь для отображения индикатора выполнения. Индикатор выполнения разделен на четыре части. 25% отображаются через 1 секунду. 50% отображается через 3 секунды. 75% отображается через 2 секунды. 100% отображается через 1 секунду.

#!/bin/bash

printf "\nWait to complete the task...\n\n"

#Подождать 1 секунду

sleep 1

#Распечатать первую часть индикатора выполнения

printf "[##### ] 25%% completed.\r"

#Wait for 3 seconds

sleep 3

#Распечатать вторую часть индикатора выполнения

printf "[########## ] 50%% completed.\r"

#Подождать 2 секунды

sleep 2

#Распечатать третью часть индикатора выполнения

printf "[############### ] 75%% completed.\r"

#Подождать 1 секунду

sleep 1

#Распечатать последнюю часть индикатора выполнения

printf "[####################] 100%% completed.\r"

printf "\n\nTask completed.\n\n"

Следующий вывод появляется после 1 секунды выполнения скрипта:

Как создать индикатор выполнения в Bash

 

Следующий вывод появляется после 7 секунд выполнения скрипта:

Как создать индикатор выполнения в Bash

 

Пример 2: реализация индикатора выполнения с помощью команды «Pv»

Полная форма команды pv — pipe viewer «просмотр каналов». Он используется для отслеживания хода данных, которые передаются через канал, и отображения индикатора выполнения в зависимости от размера данных. Эта команда по умолчанию не установлена ​​в системе. Запустите следующую команду, чтобы установить команду «pv», прежде чем практиковаться в сценарии этого примера:

$ sudo apt install pv

 

Вы должны выбрать файл большого размера, который копируется из одного места в другое. Создайте файл Bash со следующим скриптом, который копирует файл «test.txt» из текущего местоположения в местоположение «/home/andreyex/temp/». Команда «pv» используется здесь для отображения индикатора выполнения. Индикатор выполнения отображается в зависимости от размера файла «test.txt».

#!/bin/bash

echo "Copying file from one location to another location."

#Подождать 2 секунды

sleep 2

#Скопировать файл в папку назначения

cat test.txt | pv -s $(stat -c%s test.txt) > /home/andreyex/temp/test.txt

echo "File has been copied."

 

После завершения выполнения скрипта отображается следующий вывод:

Как создать индикатор выполнения в Bash

Пример 3: реализация индикатора выполнения с помощью команды «dialog»

Другой способ реализации индикатора выполнения в Bash — использование команды dialog. Эту команду можно использовать для отображения хорошо выглядящего индикатора выполнения в терминале. С помощью этого индикатора выполнения можно отображать многие типы виджетов. Задачей индикатора выполнения, отображаемой этой командой, можно управлять с помощью сценария Bash. Этот индикатор выполнения не установлен в системе по умолчанию. Выполните следующую команду, чтобы установить этот индикатор выполнения в системе:

$ sudo apt install dialog

 

Создайте файл Bash со следующим сценарием, который отображает индикатор выполнения с помощью команды «dialog». Задача копирования файла «/etc/passwd» в папку «/home/andreyex/tempdir» отображается с помощью индикатора выполнения. Индикатор выполнения разделен на пять частей; каждая часть отображается через 2 секунды. Параметр –title используется в команде «dialog» для отображения заголовка индикатора выполнения. Параметр –gauge используется в команде «диалог» для отображения индикатора выполнения высотой 10 строк и шириной 100 символов. Над индикатором выполнения отображается сообщение «Waiting to complete the task».

#!/bin/bash

#Инициализировать счетчик

current_pos=0

(

#Определить бесконечный цикл

for((;;))

do

cat <<EOF

delimiter

$current_pos

#Показать текущее значение счетчика

cp /etc/passwd to /home/andreyex/tempdir ( $current_pos%):

delimiter

EOF

#Увеличить счетчик на 20

(( current_pos+=20 ))

#Завершить цикл, когда значение счетчика больше 100

[ $current_pos -gt 100 ] && break

# Подождите 2 секунды после каждого шага приращения

sleep 2

done

) | dialog --title "Copying file..." --gauge "Waiting to complete the task" 10 100 0

 

Следующий вывод появляется после 6 секунд выполнения скрипта:

Как создать индикатор выполнения в Bash

 

 

Следующий вывод появляется после 10 секунд выполнения скрипта:

Как создать индикатор выполнения в Bash

Заключение

В этой стать показаны различные способы разработки индикатора выполнения с использованием сценария Bash, чтобы помочь пользователям Bash использовать индикатор выполнения в своей программе.

Exit mobile version