Tạo thanh tiến trình trong Bash

Tao Thanh Tien Trinh Trong Bash



Khi được yêu cầu đợi một khoảng thời gian cố định trong quá trình thực thi tập lệnh, tốt hơn là tạo một thanh tiến trình để thông báo cho người dùng đợi trong một khoảng thời gian. Thanh tiến trình có thể được tạo bằng tập lệnh Bash đơn giản hoặc sử dụng một số lệnh Linux tích hợp sẵn như “cv”, “hộp thoại”, v.v. Các phương pháp tạo thanh tiến trình bằng tập lệnh Bash được trình bày trong hướng dẫn này.

Các ví dụ khác nhau về việc tạo Thanh tiến trình trong Bash

Các cách khác nhau để triển khai thanh tiến trình trong Bash được trình bày trong phần hướng dẫn này.

Ví dụ 1: Triển khai Thanh tiến trình đơn giản mà không cần bất kỳ lệnh nào

Tạo tệp Bash bằng tập lệnh sau hiển thị thanh tiến trình bằng cách sử dụng ký tự “#” và lệnh “ngủ”. Lệnh “printf” được sử dụng ở đây để hiển thị thanh tiến trình. Thanh tiến trình được chia thành bốn phần. 25% được hiển thị sau 1 giây. 50% được hiển thị sau 3 giây. 75% được hiển thị sau 2 giây. 100% được hiển thị sau 1 giây.







#!/bin/bash

bản inf ' \N Chờ hoàn thành nhiệm vụ... \N \N '

#Chờ 1 giây

ngủ 1

#In phần đầu tiên của thanh tiến trình

bản inf '[##### ] 25%% đã hoàn thành. \ r '

#Đợi trong 3 giây

ngủ 3

#In phần thứ hai của thanh tiến trình

bản inf '[########## ] Đã hoàn thành 50%. \ r '

#Đợi trong 2 giây

ngủ 2

#In phần thứ ba của thanh tiến trình

bản inf '[############### ] Đã hoàn thành 75%. \ r '

#Chờ 1 giây

ngủ 1

#In phần cuối cùng của thanh tiến trình

bản inf '[####################] 100%% hoàn thành. \ r '

bản inf ' \N \N Nhiệm vụ hoàn thành. \N \N '

.



Đầu ra sau xuất hiện sau 1 giây thực thi tập lệnh:







Đầu ra sau xuất hiện sau 7 giây thực thi tập lệnh:



Ví dụ 2: Triển khai Thanh tiến trình bằng lệnh “Pv”

Dạng đầy đủ của lệnh “pv” là “pipe viewer”. Nó được sử dụng để theo dõi tiến trình của dữ liệu được truyền qua đường ống và hiển thị thanh tiến trình dựa trên kích thước của dữ liệu. Lệnh này không được cài đặt mặc định trong hệ thống. Chạy lệnh sau để cài đặt lệnh “pv” trước khi thực hành tập lệnh của ví dụ này:

$ sudo đúng cách cài đặt pv

Bạn phải chọn một tệp có kích thước lớn được sao chép từ vị trí này sang vị trí khác. Tạo tệp Bash bằng tập lệnh sau để sao chép tệp “test.txt” từ vị trí hiện tại sang vị trí “/home/fahmida/temp/”. Lệnh “pv” được sử dụng ở đây để hiển thị thanh tiến trình. Thanh tiến trình được hiển thị dựa trên kích thước của tệp “test.txt”.

#!/bin/bash

tiếng vang msgstr 'Sao chép tập tin từ vị trí này sang vị trí khác.'

#Đợi trong 2 giây

ngủ 2

#Copy tệp đến đích

con mèo test.txt | pv -S $ ( thống kê -c % s test.txt ) > / trang chủ / sự hiểu biết / nhiệt độ / test.txt

tiếng vang msgstr 'Tập tin đã được sao chép.'

Đầu ra sau đây được hiển thị sau khi hoàn thành việc thực thi tập lệnh:

Ví dụ 3: Thực hiện Progress Bar bằng lệnh “Dialog”

Một cách khác để triển khai thanh tiến trình trong Bash là sử dụng lệnh “hộp thoại”. Lệnh này có thể được sử dụng để hiển thị thanh tiến trình đẹp mắt trong thiết bị đầu cuối. Nhiều loại vật dụng có thể được hiển thị bằng thanh tiến trình này. Nhiệm vụ của thanh tiến trình được hiển thị bởi lệnh này có thể được kiểm soát bởi tập lệnh Bash. Theo mặc định, thanh tiến trình này không được cài đặt trong hệ thống. Chạy lệnh sau để cài đặt thanh tiến trình này trong hệ thống:

$ sudo đúng cách cài đặt hộp thoại

Tạo một tệp Bash bằng tập lệnh sau hiển thị thanh tiến trình bằng cách sử dụng lệnh “hộp thoại”. Tác vụ sao chép tệp “/etc/passwd” vào vị trí “/home/fahmida/tempdir” được hiển thị bằng thanh tiến trình. Thanh tiến trình được chia thành năm phần; mỗi phần được hiển thị sau 2 giây. Tùy chọn –title được sử dụng trong lệnh “hộp thoại” để hiển thị tiêu đề của thanh tiến trình. Tùy chọn –gauge được sử dụng trong lệnh “hộp thoại” để hiển thị thanh tiến trình với chiều cao 10 dòng và chiều rộng 100 ký tự. Thông báo “Đang chờ hoàn thành tác vụ” được hiển thị phía trên thanh tiến trình.

#!/bin/bash

#Khởi tạo bộ đếm

hiện tại_pos = 0

(

#Xác định vòng lặp vô hạn

( ( ;; ) )

LÀM

con mèo <
dấu phân cách

$current_pos

#Hiển thị giá trị bộ đếm hiện tại

cp /etc/passwd tới /home/fahmida/tempdir ($current_pos%):

dấu phân cách

EOF


# Tăng bộ đếm lên 20

( ( current_pos+= hai mươi ) )

# Chấm dứt vòng lặp khi giá trị bộ đếm lớn hơn 100

[ $current_pos -gt 100 ] && phá vỡ

# Chờ 2 giây sau mỗi lần tăng

ngủ 2

xong

) | hộp thoại --tiêu đề 'Đang sao chép tập tin...' --máy đo 'Chờ hoàn thành nhiệm vụ' 10 100 0


Đầu ra sau xuất hiện sau 6 giây thực thi tập lệnh:


Đầu ra sau xuất hiện sau 10 giây thực thi tập lệnh:


Phần kết luận

Các cách khác nhau để phát triển thanh tiến trình sử dụng tập lệnh Bash được trình bày trong hướng dẫn này để giúp người dùng Bash sử dụng thanh tiến trình trên chương trình của họ.