Ls कमांड के लिए कम में कोई रंगीन आउटपुट नहीं


21

अगर मैं दौड़ता lsहूं तो मुझे रंगीन आउटपुट मिलता है, जो मुझे उस तरह की फाइल की एक झलक पाने के लिए बहुत आसान लगता है। मैं करने के लिए यह पाइप करने का प्रयास करते lessभी साथ -rऔर -Rझंडे हमेशा खो जाना रंग। मैं zshसंस्करण 5.0.7 का उपयोग कर रहा हूं । कोई विचार? धन्यवाद।

संपादित करें: मैं ओएस एक्स पर हूं।


क्या आप पुष्टि कर सकते हैं कि lsइसके साथ --colorक्या किया जा रहा है ? पाइपलाइन को निलंबित करने का प्रयास करें ( ^Z) या psकिसी अन्य टर्मिनल से उपयोग करें । क्या उत्पादन करता है which ls?
17

मैं पास कतार से इस मंजूरी दे दी के बाद से ओपी स्पष्ट रूप से कहा है कि वे उपयोग कर रहे हैं less -rतो इसके साथ कोई समस्या नहीं है lessलेकिन साथls
terdon

मुझे आश्चर्य है कि यह अभी तक कोई डुप्लिकेट नहीं है, लेकिन निकटतम मैं वैरिएबल में स्टोर कमांड आउटपुट पा सकता था , और यह सुपर यूजर पर है।
स्कॉट

@ सच कहूँ तो मुझे यकीन नहीं है कि वहाँ सटीक डुप्लिकेट है, लेकिन कुछ प्रश्न हैं जिनके लिए उत्तर बहुत समान है ( lsपरिणाम स्टडआउट पर निर्भर करता है)। जो मुझे याद है, वह है unix.stackexchange.com/questions/157285/… जो स्वयं को unix.stackexchange.com/questions/10421/… के
22:27

@jimmij लेकिन उन सवालों कि उल्लेख नहीं है ls --color=autoका मतलब केवल रंग का उपयोग जब एक टर्मिनल के लिए नहीं लिख (यानी, एक टर्मिनल मानक आउटपुट है जब), और जब यह एक फ़ाइल या एक पाइप है।
स्कॉट

जवाबों:


21

यह डिज़ाइन द्वारा है: रंगीन आउटपुट का उत्पादन करने वाले प्रोग्राम आम तौर पर ऐसा तभी करते हैं जब उनका आउटपुट टर्मिनल में जाता है, न कि तब जब इसे पाइप पर भेजा जाता है या एक नियमित फ़ाइल में। इसका कारण यह है कि टर्मिनल पर भेजे गए डेटा को संभवतः मानव द्वारा पढ़ा जाता है, जबकि किसी प्रोग्राम में जाने या फाइल पर लिखे गए डेटा को कुछ प्रोग्राम द्वारा पार्स किए जाने की संभावना होती है, इसलिए इसमें रंग बदलने वाले एस्केप सीक्वेंस जैसी बाहरी सामग्री नहीं होनी चाहिए। ।

lsजब आप विकल्प --color(या --color=auto) पास करते हैं तो GNU एक टर्मिनल पर रंगीन आउटपुट प्रदर्शित करता है । मानक प्रकार के फ़ाइल प्रकार की परवाह किए बिना रंगीन आउटपुट को बाध्य करने के लिए, पास --color=alwaysया --color=yes(वे समानार्थी हैं)। इस सम्मलेन के बाद अन्य आदेशों का पालन किया गया है, जैसे कि GNU grep, FreeBSD grep git diff, आदि।

ls --colors=yes -l | less

के FreeBSD संस्करण के साथ ls(OSX पर भी पाया जाता है, और colorlsOpenBSD और NetBSD पर पोर्ट के रूप में उपलब्ध है ), -Gआउटपुट के टर्मिनल होने पर रंगों को प्रदर्शित करने का विकल्प पास करता है। CLICOLOR_FORCEआउटपुट फ़ाइल प्रकार की परवाह किए बिना रंग प्रदर्शित करने के लिए वातावरण सेट करें ।

CLICOLOR_FORCE=1 ls -l | less

20

सबसे अधिक समस्या यह है कि आपके lsकार्यक्रम में सेट विकल्प है, --color=autoजिसका मूल रूप से मतलब यह है कि आउटपुट रंगीन होना चाहिए, यदि यह टर्मिनल से जुड़ा है, अन्यथा (पाइप या फ़ाइल से जुड़ा आउटपुट) कोई रंग उत्सर्जित नहीं होता है।

यदि आप चाहते हैं कि रंग ऐसे हों तो आपको --colorविकल्प सेट करना चाहिए always, इसलिए प्रयास करें

ls --color=always | less -R

यदि यह व्यवहार वह है जो आप हर समय अपेक्षा करते हैं तो बस उपनाम बनाएं:

alias ls='ls --color=always'

मेरे सेटअप में, bash संस्करण 4.3, - रंग एक अवैध विकल्प है .. "रंग" के लिए पकड़ना मुझे "-G" विकल्प के बारे में बताता है, लेकिन एक ऑटो या हमेशा विकल्प के बारे में कुछ नहीं कहता है। कोई विचार?
नूनोज

5
@nunos lsसे नहीं आया है bash, यह स्टैंडअलोन कार्यक्रम है। ls --versionइसके संस्करण की जाँच करने के लिए चलाएँ । मेरा ls GNU कोरुटिल्स है) 8.21
जिमीज

@ जिमीज मेरे lsसंस्करण में --versionध्वज नहीं है । मैं ओएस एक्स से डिफ़ॉल्ट एक का उपयोग कर रहा हूं, निश्चित नहीं कि अगर यह मदद करता है।
नून

@ ननोस कृपया हमेशा अपने ऑपरेटिंग सिस्टम का उल्लेख करें। लिनक्स और गैर-जीएनयू निक्स जैसे ओएसएक्स के बीच भारी अंतर हैं।
terdon

0

मैं @ जिमीज के उत्तर पर टिप्पणी नहीं कर सकता, क्योंकि मेरे पास 50 से कम प्रतिनिधि हैं, लेकिन मैं यह बताना चाहूंगा कि मेरे लिए बैश में क्या काम किया गया था।

अगर तुम दौड़ते हो

$ man ls | grep color

आप manअपने विशिष्ट शेल वातावरण (हमारे मामले में bash) के लिए इन-पेज की सभी प्रविष्टियाँ देखेंगे ।

मेरे लिए निम्नलिखित समायोजन ने चाल चली:

$ alias ls='ls -G'

3
यह किस लिए काम किया? -Gध्वज का इस बात से कोई लेना-देना नहीं है कि lsइसके रंगीन उत्पादन का प्रबंधन कैसे किया जाता है । यह केवल उन समूहों को हटाता है, जिनके आउटपुट से ls -l। यह बीएसडी एलएस (ओएसएक्स पर इस्तेमाल किया गया) में रंग आउटपुट को प्रभावित करता है, क्या इसका मतलब है कि आप क्या कहते हैं? किसी भी मामले में, मुझे नहीं लगता कि किसी फ़ाइल पर रीडायरेक्ट किए जाने पर रंग दिखाई देगा, यह सिर्फ कमांड लाइन पर रंग दिखाएगा।
terdon
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.