इको कमांड में फॉन्ट बदलें


16

क्या यह संभव है कि या तो zsh या बैश में इको के आउटपुट की फ़ॉन्ट विशेषताएँ बदलें?

मैं जो चाहूंगा वह कुछ इस प्रकार है:

echo -n "This is the font: normal "
echo -n $font=italic "italic,"
echo -n $font=bold "bold,"
echo -n "and"
echo -n $font=small "small".

इतना है कि यह प्रिंट: "यह फ़ॉन्ट है: पाठ की एक पंक्ति के भीतर सामान्य, इटैलिक , बोल्ड , छोटा "।


इसका उपयोग किए गए शेल की तुलना में टर्मिनल एमुलेटर के साथ अधिक करना है। इस प्रश्न सूत्र में कुछ मूल्यवान संकेत हैं, मुझे लगता है
sr_

आम तौर पर, आप फ़ॉन्ट का आकार नहीं बदल सकते। केवल एक चीज, आप आमतौर पर कर सकते हैं, रंग बदल रहा है और कभी-कभी बोल्ड / रेखांकित विशेषता। इसके लिए, आप एएनएसआई एस्केप सीक्वेंस का उपयोग कर सकते हैं। उदाहरण के लिए bashguru.com/2010/01/shell-colors-colorizing-shell-scripts.html देखें ।
जोफेल

जवाबों:


15

अधिकांश पर यदि सभी टर्मिनल एमुलेटर नहीं हैं, तो आप अलग-अलग फ़ॉन्ट आकार या अलग-अलग फ़ॉन्ट, केवल रंग और कुछ विशेषताओं (बोल्ड, रेखांकित, स्टैंडआउट) को सेट नहीं कर सकते।

बैश (या zsh या किसी अन्य शेल में) में, आप सीधे टर्मिनल एस्केप सीक्वेंस का उपयोग कर सकते हैं (कुछ विदेशी लोगों के अलावा, सभी टर्मिनल इन दिनों xterm के लीड का अनुसरण करते हैं)। CSIहै ESC [, लिखा $'\e['बैश में। विशेषताएँ बदलने के लिए भागने का क्रम है CSI Ps m

echo $'\e[32;1mbold red\e[0mplain\e[4munderlined'

Zsh के लिए एक सुविधाजनक कार्य है।

autoload -U colors
colors
echo $bold_color$fg[red]bold red${reset_color}plain$'\e'$color[underline]munderlined

16

आप इन रंग परिभाषाओं को स्क्रिप्ट या स्रोत फ़ाइल में शामिल कर सकते हैं। कुछ ऐसा दिख सकता था।

#!/bin/bash
PATH=/bin:/usr/bin:

NONE='\033[00m'
RED='\033[01;31m'
GREEN='\033[01;32m'
YELLOW='\033[01;33m'
PURPLE='\033[01;35m'
CYAN='\033[01;36m'
WHITE='\033[01;37m'
BOLD='\033[1m'
UNDERLINE='\033[4m'

echo -e "This text is ${RED}red${NONE} and ${GREEN}green${NONE} and ${BOLD}bold${NONE} and ${UNDERLINE}underlined${NONE}."

tput sgr0

ध्यान दें कि आपको प्रत्येक परिवर्तन के बाद ANSI रंग कोड को रीसेट करना चाहिए। tput sgr0फिर सेट करता है सभी परिवर्तनों को आप टर्मिनल में बना दिया है।

मेरा मानना ​​है कि फ़ॉन्ट आकार या इटैलिक्स को उस टर्मिनल के लिए विशिष्ट होगा जो आप उपयोग कर रहे हैं।

जबकि यह मार्गदर्शिका आपके बैश प्रॉम्प्ट को कस्टमाइज़ करने के लिए विशिष्ट है, यह कलर कोड के लिए एक अच्छा संदर्भ है और आप जो भी कर सकते हैं उसके कुछ विचार उत्पन्न करते हैं।


5

ऐसा लगता है जैसे लेआउट के [0x1b]सामने -चरर को संभाल नहीं सकता है [

पहली पंक्ति बोल्ड बनाती है:

 echo -e "\x1b[1m bold"
     echo -e "\x1b[30m black"
     echo -e "\x1b[31m red"
     echo -e "\x1b[32m green"
     echo -e "\x1b[33m yellow"
     echo -e "\x1b[34m blue"
     echo -e "\x1b[35m mag"
     echo -e "\x1b[36m cyan"
     echo -e "\x1b[37m white"   

सामान्य प्रकार के लिए, मुझे केवल पता है

echo -e "\x1b[0m io-std"
echo -e "\x1b[1m bold"
echo -e "\x1b[2m normal"

और टिप्पणियों से, धन्यवाद मैनेटवर्क और जिप्सीकोस्मोनॉट:

echo -e "\x1b[3m italic"
echo -e "\x1b[4m underlined"
echo -e "\x1b[5m blinking"
echo -e "\x1b[7m inverted"

और io-std और सामान्य के बीच का अंतर नहीं जानता।

मैंने शेल में इटैलिक या छोटा नहीं देखा है।

आप उन्हें बैश में Ctrl + द्वारा मैनटवर्क (थैंक्स टू मैनटवर्क भी) दर्ज कर सकते हैं v ESC , जहां इसे प्रदर्शित किया जाएगा ^[। इसका मतलब है कि पूरा एएनएसआई अनुक्रम (बोल्ड 'से पहले रिक्त से बचने के लिए) ^[[1m boldया जैसा दिखेगा ^[[1mbold

कई संपादकों को (char) 0x1b की समस्या है। विकल्प: इसे कहीं से कॉपी / पेस्ट करें, या उपयोग करें

echo -e "\x1b[1m bold"

बैश में, या एक हेक्स संपादक।


1
एस्केप वर्ण टाइप किए जा सकते हैं: Ctrl + V, Esc। ("^ [] के रूप में प्रदर्शित किया जाएगा। इसका मतलब है कि पूरे ANSI अनुक्रम" ^ [[1mbold "की तरह दिखाई देगा।)
manatwork

1
उल्लेख करने के लिए और अधिक विशेषताएं हैं: \e[4mरेखांकित, \e[5mनिमिष, \e[7mउल्टा।
१५:५२

@manatwork: उन्हें जोड़ा।
उपयोगकर्ता अज्ञात

@userunknown मदद करने के लिए धन्यवाद, आपके कोड के साथ छेड़छाड़, मैंने पाया इटैलिक हैecho -e "\x1b[3m italic"
जिप्सीकोस्मोनॉट

0

यहाँ:

http://en.wikipedia.org/wiki/ANSI_escape_code

(ध्यान दें: उनमें से बहुत से आमतौर पर काम नहीं करते हैं, लेकिन इनमें से अधिकांश इस प्रकार चिह्नित हैं।)

मैं टर्मिनल में एक खेल बना रहा हूं और उपरोक्त लिंक पर बहुत भरोसा कर रहा हूं। यहां तक ​​कि यह आपको बताता है कि कर्सर को कैसे छिपाया जाए / अनसुना किया जाए, रंग (30), "बोल्ड" (हल्का), गहरा, रेखांकित, इटैलिक, पृष्ठभूमि रंग (30 के बजाय 40), आदि से आप कर्सर के स्थान को भी बदल सकते हैं। जो बहुत मददगार है - उदाहरण के लिए, "\x1B[1A"कर्सर को एक पंक्ति में "\x1B[0;0H"ले जाता है, कर्सर को पंक्ति 0, कर्नल 0 में ले जाता है, "\x1B[2J"स्क्रीन को "\x1B[2K"साफ करता है, लाइन को साफ करता है।

अपने उद्देश्यों के लिए जैसा कि लोगों ने कहा है:

echo -e "\x1b[30;44m black with blue background \x1b[m"

echo -e "\x1b[31;42m red with green background \x1b[m"

echo -e "\x1b[32;40m green with black background \x1b[m"

echo -e "\x1b[8m Invisible; na na na na boo boo \x1b[m"

नोट: आप की जरूरत है-e में

echo **-e** "\x1b[35;1m Light purple \x1b[m"

या आपको सिंगल कोट्स का उपयोग करने की आवश्यकता है। टाइप man echoक्यों (डबल कोट्स आम तौर पर एक दर्द जब मुद्रण कर रहे हैं देखने के लिए, जब मैं करने के लिए सामान की जरूरत का विस्तार नहीं या मैं एएनएसआई भागने दृश्यों की जरूरत है, मैं एकल उद्धरण का उपयोग करें क्योंकि यह आसान है - भले ही मैं इसे कई बार करने से यह करने के लिए इस्तेमाल किया मिल गया - भूल जाना -e स्थिति में आपको " box with numbers and letters[35; 1 मी") मिलता है।

हर बार जब आप CSIइसे देखते हैं "\x1b["( "\e["या "\u1b[") के साथ। "\x1b["मुझे लगता है कि अधिक मानक है, लेकिन मैं वास्तव में नहीं जानता कि उनके बीच क्या अंतर है।


आप अतिरिक्त वर्ण के साथ अपने तार को अव्यवस्थित की तरह, \ ई :-) उपयोग नहीं करते हैं
clearlight

@clearlight मुझे यकीन नहीं है कि आपका क्या मतलब है। मुझे लगता है कि आपको "यूज़ \ ई" कहने का मतलब हो सकता है। हालांकि, मुझे \eजितना \x1bमिला है, उससे कम समर्थन मिला है। करने के लिए इष्टतम चीज esc=$'\e'या तो esc=$'\x1b'( या यह बाश में है) और फिर उपयोग "${esc}[34;1m"(के लिए, उदाहरण के लिए, उज्ज्वल नीला)। मेरे पास एक अर्ध-जटिल उदाहरण है ( github.com/dylnmc/ps1porn/blob/master/powerline.sh ) एक असली बैश प्रॉम्प्ट स्ट्रिंग के लिए;) कृपया रेपो के नाम को क्षमा करें - आप freenode के चैनल # में लोगों को धन्यवाद दे सकते हैं उसके लिए आर्चलिनक्स-ऑफटॉपिक।
डायलन

ऐसा करने esc=$'\e'का कारण यह है कि यह बैश को मौके पर एनी-एस्केप चरित्र बनाने की अनुमति देता है, और आप इसे कुछ तरीकों से लाभान्वित करते हैं। कभी कभी, वास्तव में, (के रूप में GitHub लिंक में दर्शाया गया है), तो आप है उचित ढंग से प्रदर्शित करने के लिए रंग प्राप्त करने के क्रम में इस विधि का उपयोग करने के लिए। बैश के पुराने संस्करणों के साथ-साथ शेल के लिए, आपको रंग दिखाने के लिए इस विधि का उपयोग करना चाहिए (लेकिन इसकी आवश्यकता नहीं है) यह दिखाने के लिए ... कि टर्मिनल बच के दृश्यों का उपयोग करता है जो कि अधिकांश आधुनिक टर्मिनल करते हैं।
डायलन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.