कुछ प्रोग्राम टर्मिनल पर क्या प्रदर्शित किए जा रहे हैं (यादृच्छिक उदाहरण चुनने के लिए, प्रोग्राम 'एसएल') कैसे संपादित करें? मैं यहां लिनक्स टर्मिनल के बारे में सोच रहा हूं, यह अन्य ओएस में भी हो सकता है, मुझे नहीं पता। एक बार कुछ पाठ प्रदर्शित होने के बाद मैंने हमेशा सोचा है, यह वहां रहा। पूरी स्क्रीन को दोबारा हटाए बिना आप इसे कैसे बदल सकते हैं?टर्मिनल में रीड्रा स्क्रीन
उत्तर
कई एप्लिकेशन curses लाइब्रेरी का उपयोग करते हैं, या कुछ भाषा बाध्यकारी करते हैं।
एक पंक्ति पर पुनर्लेखन के लिए, जैसे प्रगति की जानकारी अपडेट करना, विशेष वर्ण "carriage return", अक्सर भागने अनुक्रम "\ r" द्वारा निर्दिष्ट, कर्सर को वर्तमान लाइन की शुरुआत में वापस कर सकता है जिससे बाद के आउटपुट की अनुमति मिलती है वहां पहले लिखा गया था जिसे ओवरराइट करें।
ऐसे वर्ण हैं जिन्हें कर्सर को वापस ले जाने वाले टर्मिनल पर भेजा जा सकता है। फिर पाठ ओवरराइट किया जा सकता है।
एक सूची here है। "कर्सर कुछ ले जाएं" लाइनों पर ध्यान दें।
यदि आप लाइनफीड ('\ n') के बजाय कैरिज रिटर्न ('\ r') के साथ टर्मिनल पर भेजे गए एक लाइन को समाप्त करते हैं, तो यह कर्सर को वर्तमान लाइन की शुरुआत में ले जायेगा, जिससे कार्यक्रम की अनुमति मिल जाएगी पहले प्रिंट किए गए शीर्ष के ऊपर अधिक टेक्स्ट प्रिंट करने के लिए। मैं इसे कभी-कभी लंबे कार्यों के लिए प्रगति संदेशों के लिए उपयोग करता हूं।
यदि आपको कभी भी उससे अधिक टर्मिनल संपादन करने की आवश्यकता है, तो ncurses या उसके संस्करण का उपयोग करें।
@Corporal भावुक के जवाब पर निर्माण करने के लिए, वहाँ उपलब्ध है कि आप इस तरह के रूप curses/ncurses
के लिए इस कार्यक्षमता के कुछ संभाल लेंगे इस shellscript
#!/bin/bash
i=1
while [ true ]
do
echo -e -n "\r $i"
i=$((i+1))
done
-n विकल्प न्यू लाइन से बचाता कोशिश पुस्तकालय हैं। .. और \ r कैरिज रिटर्न करता है ... आप एक ही पंक्ति में बार-बार लिखते हैं - कोई स्क्रॉलिंग या
कॉरपोरल टची ने उत्तर दिया है कि यह निम्नतम स्तर पर कैसे किया जाता है। आसान विकास के लिए curses library टर्मिनल को केवल अक्षरों को भेजने की तुलना में उच्च स्तर का नियंत्रण देता है।
एनसीर्स एक क्रॉस-प्लेटफ़ॉर्म लाइब्रेरी है जो आपको स्मार्ट टर्मिनल पर उपयोगकर्ता इंटरफेस खींचने देती है।
मैं डैनियो से सहमत हूं, ncurses जाने का रास्ता है। यहाँ एक अच्छा ट्यूटोरियल है:
टर्मिनल आप नियंत्रण seuqences भेजने पर निर्भर करता है। सामान्य अनुक्रम उदाहरण के लिए हैं esc [; एच कर्सर को एक विशिष्ट स्थिति में भेजने के लिए (उदा। Ansi, Xterm, Linux, VT100 पर)। हालांकि, यह उपयोगकर्ता के प्रकार या टर्मिनल के साथ अलग-अलग होगा ... curses (terminfo फ़ाइलों के संयोजन के साथ) आपके लिए उस जानकारी को लपेट देगा।
अब मैं समझता हूं कि 'बिल्ली' या 'कम' में बाइनरी फ़ाइलों को क्यों देखना मेरे टर्मिनल को तोड़ देगा ... यह हमेशा चरित्र सेट को बदल देगा और मुझे फिर से शुरू करना होगा, हाहा। – krs013