इको शेल कमांड का यह उपयोग क्या करता है?


0

मुझे echo -n $'\e]0;Hello World\a'एक शेल स्क्रिप्ट मिली जो उस कोड बेस का हिस्सा है जिस पर मैं काम कर रहा हूं। वास्तव में क्या करता है? यह निश्चित रूप से कुछ भी दिखाई नहीं देता है।

ध्यान दें, मैं Ubuntu 12.04.5 का उपयोग कर रहा हूं।


पहले से उपलब्ध कराए गए उत्तरों के अलावा, ध्यान दें कि इस कमांड द्वारा उपयोग किया गया सिंटैक्स पोर्टेबल नहीं है, इसलिए मैं समकक्ष लेकिन पोसिक्स कंपाइलेंट की सिफारिश करूंगा printf "\033]0;Hello World\07"
जुलियाग्रे

जवाबों:


2
  • -n अंत में एक नई लाइन गूँजने से रोकता है।
  • $'एक बैश कमांड है जो एएनएसआई सी मानक द्वारा निर्दिष्ट के रूप में प्रतिस्थापित करने के लिए स्ट्रिंग में बैकस्लैश-एस्केप किए गए वर्णों का कारण बनता है। और जानकारी
  • \e = ईएससीपी।
  • \e]0;इस विंडो के शीर्षक को "हैलो वर्ल्ड" में सेट करने के लिए एक कमांड है।

* Nix Echo पर अधिक जानकारी यहाँ


1
यह सही नहीं है; \e[0;सामान्य पाठ मोड सेट करेगा, लेकिन \e]0;विंडो शीर्षक सेट करता है। ANSI कंट्रोल सीक्वेंस इंट्रोड्यूसर (CSI \e[) और ऑपरेटिंग सिस्टम कमांड (OSC \e]) के बीच का अंतर महत्वपूर्ण है लेकिन आसानी से छूट जाता है।
गॉर्डन डेविसन

@GordonDavisson अच्छी नज़र, दुरुस्त। :)
ᴇc --ιᴇ007

1
आप जवाब अभी भी थोड़ा गलत है। फाइनल \aइस विशेष मामले में घंटी नहीं बजाता है, लेकिन खिड़की के शीर्षक के अंत के सीमांकक के रूप में भागने के क्रम का हिस्सा है।
जुलियाग्रे

3

XTerm (या कुछ भी जो इसे अनुकरण करता है) में, यह "हैलो वर्ल्ड" के लिए विंडो का शीर्षक सेट करता है। \e]एक "ऑपरेटिंग सिस्टम कमांड" (OSC) के लिए ASNI एस्केप कोड है, जिसका अर्थ है कि ऑपरेटिंग सिस्टम पर निर्भर है कि इसका मतलब क्या है; XTerm में, <OSC>0;text<bel>विंडो शीर्षक सेट करने के लिए उपयोग किया जाता है।

देखें विकिपीडिया , और एडवर्ड मोए के XTerm अनुक्रम सूची ( "ऑपरेटिंग सिस्टम नियंत्रण" अनुभाग के लिए खोज)।


0

\e]0;एक वैध एएनएसआई कोड नहीं है, "सामान्य प्रदर्शन" प्राप्त करने के लिए यह होना चाहिए \e[0m। जैसा कि ʜcʜι by007 के लिंक के तहत पाठ द्वारा दिखाया गया है, आप उसी क्रम में उनमें से कई को जोड़ सकते हैं:

$ प्रतिध्वनी  
 परीक्षण $ _

यह TESTरिवर्स रेड
नोट होगा जो-एस्केप एस्केप पार्सिंग के लिए आवश्यक है। -n बनाता है गूंज अंत में एक (सीआर +) एलएफ प्रिंट नहीं करता है ।

बेहतर अभी तक tputकमांड के उपयोग द्वारा टर्मफ्लो कोड का उपयोग कर रहा है - man 5 terminfoतकनीकी है लेकिन संभवतः काफी पूर्ण है। क्यों तपस्वी? क्योंकि टर्मिनल हमेशा एएनएसआई नहीं होते हैं, टर्मोफिक्स "फिक्स" करने का प्रयास करता है जो संभव के रूप में कई टर्मिनलों को एक एकल इंटरफ़ेस प्रदान करता है।

... इसलिए echo "$(tput sgr0)"- echo -e "\e[0m"यदि आपके पास एएनएसआई टर्मिनल है तो वही है ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.