2009-11-11 16 views
11

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

मुझे पता है कि एएनएसआई एस्केप दृश्यों का उपयोग करके बैश स्क्रिप्ट के आउटपुट को रंगना संभव है। उदाहरण के लिए:

$ echo -e "This is red->\e[00;31mRED\e[00m" 

मैं लुआ में भी ऐसा ही करने की कोशिश की:

$ lua -e "io.write('This is red->\\e[00;31mRED\\e[00m\n')" 

लेकिन यह काम नहीं करता। मैंने io.write() के बजाय print() के साथ भी प्रयास किया, लेकिन परिणाम वही है।

+1

\ ई बचने वाला चरित्र है, ASCII 0x1b। – derobert

+0

धन्यवाद, मुझे यह नहीं पता था! – Wookai

उत्तर

13

lua -e "print('This is red->\27[31mred\n')"

नोट \ 27। जब भी लूआ \ को दशमलव संख्या के बाद देखता है, तो यह दशमलव संख्या को उसके ASCII समकक्ष में परिवर्तित करता है। मैंने bash \ 033 ईएससी चरित्र प्राप्त करने के लिए \ 27 का उपयोग किया। अधिक जानकारी here

+0

बढ़िया, यह काम करता है;)! आपका बहुत बहुत धन्यवाद ! – Wookai

2

यह निश्चित रूप से लुआ में किया जा सकता है; चाल सिर्फ भागने अनुक्रम सही हो रही है। आप एक विशिष्ट ASCII मूल्य को लिखने के लिए string.char उपयोग कर सकते हैं:

 
$ echo -e '\E[37;44m'"\033[1mHello\033[0m" # white on blue 
Hello 
$ echo -e '\E[37;44m'"\033[1mHello\033[0m" | xxd # check out hex dump of codes 
0000000: 1b5b 3337 3b34 346d 1b5b 316d 4865 6c6c .[37;44m.[1mHell 
0000010: 6f1b 5b30 6d0a       o.[0m. 
$ lua -e "for _,i in ipairs{0x1b,0x5b,0x33,0x37,0x3b,0x34,0x34,0x6d,\ 
0x1b,0x5b,0x31,0x48,0x65,0x6c,0x6c,0x6f,0x1b,0x5b,0x30,0x6d,0x0a} \ 
do io.write(string.char(i)) end" # prints out "Hello" in white on blue again 
Hello 
+0

विवरण के लिए धन्यवाद, यह देखना दिलचस्प है कि यह कैसे काम करता है। हालांकि jkndrkn के जवाब को स्वीकार करना, क्योंकि अधिक व्यावहारिक;)! – Wookai