whiptail
उबंटू और कई अन्य डिस्ट्रो पर प्रीइंस्टॉल्ड आता है, और पूर्ण-स्क्रीन (लेकिन अभी भी टर्मिनल-आधारित) प्रगति तत्वों को दिखाएगा।
dialog
का सुपरसेट है whiptail
, इसलिए यह उदाहरण दोनों के साथ समान रूप से काम करेगा। यह अधिक उन्नत UI तत्व प्रदान करता है, इसलिए यह आपके लिए उपयोगी हो सकता है यदि आप फ़ाइल पिकर और फ़ॉर्म जैसे उपयोगकर्ता इंटरैक्शन की तलाश कर रहे हैं, लेकिन इसके कई प्रणालियों पर पूर्वस्थापित नहीं होने का नुकसान है।
for i in $(seq 1 100)
do
sleep 0.1
echo $i
done | whiptail --title 'Test script' --gauge 'Running...' 6 60 0
ध्यान दें कि स्क्रिप्ट आउटपुट की व्याख्या प्रतिशत के रूप में की जाती है, इसलिए आपको अपने आउटपुट को तदनुसार समायोजित करना पड़ सकता है।
व्हिपटेल और डायलॉग आपको पाठ को समय-समय पर क्रिप्टि सिंटैक्स के माध्यम से संशोधित करने की अनुमति देते हैं:
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
किसी फ़ाइल या स्ट्रीम की प्रगति को इसके माध्यम से दिखाया जा सकता है। हालांकि यह (आसानी से) एक लूप जैसे कस्टम ऑपरेशन की प्रगति दिखाने के लिए नहीं किया जा सकता है। यह विशेष रूप से धाराओं के लिए डिज़ाइन किया गया है।
$ head -c 1G < /dev/urandom | pv -s 1G > /dev/null
277MB 0:00:16 [17.4MB/s] [========> ] 27% ETA 0:00:43
कुछ वास्तविक दुनिया के उदाहरण जहाँ pv
काम आता है:
# 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
मुझे ऐसी किसी भी कमांड के बारे में नहीं पता है जो pv
या की शैली में एक-पंक्ति प्रगति पट्टियाँ देती हो wget
, लेकिन इसमें बहुत सी सरल बैश / पर्ल / सीड स्क्रिप्ट हैं जो उस कार्यक्षमता को जोड़ देंगी, जैसा कि अन्य लोगों ने यहाँ साझा किया है।