whiptail
được cài đặt sẵn trên Ubuntu và nhiều bản phát hành khác, và sẽ hiển thị các yếu tố tiến trình toàn màn hình (nhưng vẫn dựa trên thiết bị đầu cuối).
dialog
là một superset của whiptail
, vì vậy ví dụ này sẽ hoạt động tốt như nhau với cả hai. Nó cung cấp các yếu tố UI nâng cao hơn, vì vậy nó có thể hữu ích nếu bạn đang tìm kiếm sự tương tác của người dùng như bộ chọn tệp và biểu mẫu, nhưng nó có nhược điểm là không được cài đặt sẵn trên nhiều hệ thống.
for i in $(seq 1 100)
do
sleep 0.1
echo $i
done | whiptail --title 'Test script' --gauge 'Running...' 6 60 0
Lưu ý rằng đầu ra tập lệnh được hiểu theo tỷ lệ phần trăm, do đó bạn có thể phải điều chỉnh đầu ra của mình cho phù hợp.
Whiptail và Dialog cũng cho phép bạn sửa đổi văn bản trong thời gian chạy thông qua một cú pháp khá khó hiểu:
phases=(
'Locating Jebediah Kerman...'
'Motivating Kerbals...'
'Treating Kessler Syndrome...'
'Recruiting Kerbals...'
)
for i in $(seq 1 100); do
sleep 0.1
if [ $i -eq 100 ]; then
echo -e "XXX\n100\nDone!\nXXX"
elif [ $(($i % 25)) -eq 0 ]; then
let "phase = $i / 25"
echo -e "XXX\n$i\n${phases[phase]}\nXXX"
else
echo $i
fi
done | whiptail --title 'Kerbal Space Program' --gauge "${phases[0]}" 6 60 0
pv
cho thấy tiến trình của một tập tin hoặc luồng được truyền qua nó. Tuy nhiên, nó không thể được (dễ dàng?) Được sử dụng để hiển thị tiến trình của một hoạt động tùy chỉnh như vòng lặp. Nó được thiết kế dành riêng cho các luồng.
$ head -c 1G < /dev/urandom | pv -s 1G > /dev/null
277MB 0:00:16 [17.4MB/s] [========> ] 27% ETA 0:00:43
Một số ví dụ trong thế giới thực pv
có ích:
# progress while importing a DB dump
pv mybigfile.sql | mysql -uroot -p dbname
# importing straight from a remote server
ssh user@server 'cat mybigfile.sql.gz' | pv | gzip -cd | mysql -uroot -p dbname
# taking a snapshot of a btrfs partition
btrfs send /snapshots/$date | pv | btrfs receive /mnt/backup/root
Tôi không biết bất kỳ lệnh nào cung cấp các thanh tiến trình một dòng theo kiểu pv
hoặc wget
, nhưng có rất nhiều tập lệnh Bash / Perl / sed đơn giản sẽ thêm chức năng đó, như những người khác đã chia sẻ ở đây.