\r
या \b
दृष्टिकोणों के अलावा , \033[2K
नियंत्रण चरित्र का उपयोग करना संभव है , जो टर्मिनल को पूरी रेखा को साफ करने के लिए कहता है। इसकी तुलना में इसका लाभ यह \b
है कि आपको उन \b
वर्णों की संख्या से मेल नहीं खाना है , जिन्हें आप हटाना चाहते हैं और \r
नई पंक्ति पुरानी से छोटी होने पर स्क्रीन पर चिपके हुए वर्ण नहीं होंगे। एक।
नीचे इस सवाल पर इसे कैसे लागू किया जा सकता है इसका उदाहरण है , और यहां बूट संदेशों के समान आउटपुट बनाने के लिए संबंधित एप्लिकेशन का एक उदाहरण है। इस विशेष उदाहरण में, टाइमर 0 वें सेकंड तक पहुंचने के बाद चला जाएगा और टाइमर लाइन को "रेडी!" से बदल दिया जाएगा। मुहावरा।
#!/bin/bash
sek=60
echo "60 Seconds"
while ((sek--)); do
printf "One moment please: %d" "$sek"
sleep 1
printf "\r%b" "\033[2K"
done
echo "Ready!"
एक और विकल्प dialog
कमांड-लाइन में सरल संवाद बनाने के लिए कमांड को नियोजित करना होगा । संवाद टाइमर की अवधि के लिए स्क्रीन पर रहेगा और लूप के साथ अपडेट होगा, और जब तक यह पूरा नहीं हो जाता है - टाइमर को सहज तरीके से संदेश के लिए "रेडी! प्रेस टू एग्जिट" से बदल दिया जाएगा:
#!/bin/bash
sek=60
echo "60 Seconds"
while ((sek--)); do
echo "$sek" | dialog --progressbox "Please wait" 10 25
sleep 1
done
dialog --msgbox "Ready! Press <OK> to finish" 10 25
watch
कमांड के साथ ऐसा करने का एक तरीका हो सकता है , हालांकि मुझे यकीन नहीं है कि यह कैसे करना है।