Sed का उपयोग करके रंगीन आउटपुट कैसे रखें


10

मैं sedकमांड का उपयोग कर रहा हूं और मैं पिछले कमांड से रंगीन आउटपुट रखना चाहता हूं। आउटपुट lsरंगीन है, लेकिन सेड का आउटपुट नहीं है। मैं OSX का उपयोग कर रहा हूं।

ls -la | sed -En  '/Desktop/q;p'

जवाबों:


13

MacOS पर, lsGNU नहीं है lsऔर यह --color=alwaysविकल्प स्वीकार नहीं करता है कि लिनक्स उपयोगकर्ता इस कार्यक्षमता के लिए उम्मीद कर सकते हैं।

के macOS संस्करण में ls, रंगों को दो चर द्वारा नियंत्रित किया जाता है : $CLICOLORऔर $CLICOLOR_FORCE। यदि पूर्व को परिभाषित किया गया है, तो $TERMरंग द्वारा समर्थित टर्मिनल , और आउटपुट टर्मिनल के लिए है, तो यह आउटपुट जीएनयू के --color=autoविकल्प की तरह रंगीन होगा । यदि बाद वाले चर को भी परिभाषित किया जाता है, तो अंतिम स्थिति को गिरा दिया जाता है, जैसे कि GNU का व्यवहार --color=always

तो रंग के माध्यम से पारित करने के लिए sed, आप निम्नलिखित की तरह कुछ की आवश्यकता होगी:

CLICOLOR_FORCE=1 ls -la | sed -En '/Desktop/q;p'

MacOS के lsहै -Gरंग के रूप में अच्छी तरह से सक्रिय करने का विकल्प है, लेकिन मुझे यकीन है कि यह कैसे एक पाइप लाइन में बर्ताव करता है नहीं कर रहा हूँ।
8 बिट्री

2
@ 8 बिट्री पासिंग -Gपरिभाषित करने के बराबर है $CLICOLOR(और इसलिए पर्याप्त नहीं)
फॉक्स

6

मैं आँख बंद करके अनुमान लगाऊंगा कि आपका वितरण, जैसे कई, एक उपनाम है जो नक्शे में lsहै ls --color=autols -la --color=always | sed …कार्य करना चाहिए।

( autoसेटिंग बनाता है, मोटे तौर पर, lsके लिए यह है कि रंग से बच दृश्यों द्वारा एहसास है की जाँच इसके उत्पादन प्रदर्शन या नहीं, और प्रदर्शन के लिए केवल रंग में जाता है। कारण, यानी अदृश्य आदेश वर्ण, तो एक कार्यक्रम उन्हें भ्रमित कर सकते हैं फ़ाइल नाम के भाग के लिए, जैसी चीजें।)


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