कर्सर ले जाना
कर्सर को स्थान देने के लिए एस्केप कोड का उपयोग किया जा सकता है। इसका उपयोग आमतौर पर स्क्रीन पर एक अलग स्थान पर घड़ी या किसी अन्य प्रकार की जानकारी प्रदान करने के लिए किया जाता है, जैसे कि हर बार प्रॉम्प्ट खींचे जाने पर ऊपरी कोने पर। यहां कर्सर को स्थान देने वाले एस्केप कोड की एक सूची दी गई है:
तालिका 13-4: कर्सर मूवमेंट एस्केप अनुक्रम
Escape Code Action
\033[l;cH कर्सर को लाइन पर ले जाएँ l और स्तंभ c
\033[nA कर्सर ऊपर ले जाएं n पंक्तियां
\033[nB कर्सर को नीचे ले जाएँ n पंक्तियां
\033[nC कर्सर को आगे ले जाएँ n अक्षर
\033[nD कर्सर को पीछे की ओर ले जाएँ n अक्षर
\033[2जे स्क्रीन साफ़ करें और कर्सर को ऊपरी बाएँ कोने पर ले जाएँ (पंक्ति 0, कॉलम 0)
\033[K कर्सर की स्थिति से वर्तमान लाइन के अंत तक साफ़ करें
\033[s वर्तमान कर्सर स्थिति को संग्रहीत करें
\033[यू संग्रहीत कर्सर स्थिति को याद करें
उपरोक्त कोड का उपयोग करके, हम एक प्रॉम्प्ट का निर्माण करेंगे जो हर बार प्रॉम्प्ट प्रदर्शित होने पर स्क्रीन के शीर्ष पर एक लाल पट्टी खींचता है जिसमें एक घड़ी (पीले पाठ में प्रस्तुत) होती है। प्रॉम्प्ट के लिए कोड यह दुर्जेय दिखने वाली स्ट्रिंग है:
PS1="\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]
<\u@\h \W>\$ "
PS1="\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]
<\u@\h \W>\$ "
आइए स्ट्रिंग के प्रत्येक भाग पर एक नज़र डालें और देखें कि यह क्या करता है:
कर्सर ले जाना
तालिका 13-5: कॉम्प्लेक्स प्रॉम्प्ट स्ट्रिंग का टूटना
अनुक्रम क्रिया
अनुक्रम क्रिया
\[ एक गैर-मुद्रण वर्ण अनुक्रम शुरू होता है। इसका उद्देश्य बैश को दृश्यमान प्रॉम्प्ट के आकार की उचित गणना करने की अनुमति देना है। सटीक गणना के बिना, कमांड लाइन संपादन सुविधाएँ कर्सर को सही ढंग से स्थिति में नहीं ला सकतीं।
\033[s कर्सर की स्थिति संग्रहीत करें। स्क्रीन के शीर्ष पर बार और घड़ी खींचे जाने के बाद शीघ्र स्थान पर लौटने के लिए इसकी आवश्यकता होती है। ध्यान रखें कि कुछ टर्मिनल एमुलेटर इस कोड को नहीं पहचानते हैं।
\033[0;0H कर्सर को ऊपरी बाएँ कोने पर ले जाएँ, जो पंक्ति 0, कॉलम 0 है।
\033[0;41m पृष्ठभूमि का रंग लाल पर सेट करें।
\033[के वर्तमान कर्सर स्थान (ऊपरी बाएँ कोने) से पंक्ति के अंत तक साफ़ करें। चूंकि पृष्ठभूमि का रंग अब लाल है, इसलिए हमारी पट्टी बनाते हुए उस रंग की रेखा साफ़ हो जाती है। ध्यान दें कि पंक्ति के अंत तक साफ़ करने से कर्सर की स्थिति नहीं बदलती है, जो ऊपरी बाएँ कोने पर बनी रहती है।
\033[1;33m टेक्स्ट का रंग पीला पर सेट करें।
\t वर्तमान समय प्रदर्शित करें. हालाँकि यह एक "प्रिंटिंग" तत्व है, फिर भी हम इसे प्रॉम्प्ट के गैर-प्रिंटिंग भाग में शामिल करते हैं, क्योंकि हम नहीं चाहते कि प्रदर्शित प्रॉम्प्ट के सही आकार की गणना करते समय घड़ी को बैश में शामिल किया जाए।
\033[0m रंग बंद करें। इससे टेक्स्ट और बैकग्राउंड दोनों प्रभावित होते हैं.
\033[u पहले से सहेजी गई कर्सर स्थिति को पुनर्स्थापित करें।
\] गैर-मुद्रण वर्ण अनुक्रम समाप्त करें।
<\u@\h \W>\$ प्रॉम्प्ट स्ट्रिंग।