`Ls` के साथ रंग कैसे बंद करें?


50

आदि से रंग का उत्पादन होना आम तौर पर अच्छा होता है ls, grepलेकिन जब आप ऐसा नहीं चाहते हैं (जैसे कि एक स्क्रिप्ट में जहां आप परिणाम को किसी अन्य कमांड पर पाइप कर रहे हैं) क्या कोई स्विच है जो इसे बंद कर सकता है? यदि यह डिफ़ॉल्ट नहीं है, तो इसे ls -G( कुछ BSD- व्युत्पन्न संस्करणों के साथ ls) ls +Gचालू करता है , लेकिन इसे बंद नहीं करता है। वहाँ कुछ और है कि होगा?


4
देर से लेकिन किसी को भी खोज करने के लिए: जीएनयू के लिए ls और grepजब पाइपिंग के लिए आपको कुछ भी करने की आवश्यकता नहीं है क्योंकि --color=autoपहले से ही रंग बंद हो जाता है जब उसका आउटपुट पाइप होता है, या वास्तव में कुछ भी लेकिन एक टटी; यही 'ऑटो' का मतलब है। इसी तरह FreeBSD ls -Gया 'CLICOLOR' 'अक्षम है यदि आउटपुट टर्मिनल पर निर्देशित नहीं है, जब तक ... CLICOLOR_FORCE ...'।
dave_thompson_085

जवाबों:


69

lsआमतौर पर आजकल अधिकांश डिस्ट्रोस में एक अन्य के माध्यम से रंग उत्पादन सक्षम किया जाता है।

$ alias ls
alias ls='ls --color=auto'

आप हमेशा किसी उपनाम को अस्थायी रूप से बैकस्लैश के साथ जोड़कर अक्षम कर सकते हैं।

$ \ls

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


3
आप command lsबेशक इस्तेमाल कर सकते हैं , लेकिन यह थोड़ा तेज है।
आइकनोकॉस्ट

साफ़ - सुथरा तरीका! प्रमुख `` के लिए स्क्रिप्ट को अद्यतन करेगा।
वियत २

1
मैं \ ls प्यार करता था
एलेक्स Angelico

27

जीएनयू के साथ ls, आप ls --color=neverरंग आउटपुट को स्पष्ट रूप से अक्षम करने के लिए निर्दिष्ट कर सकते हैं । (यहां तक ​​कि अगर आपके पास एक है alias ls='ls --color=auto', जब आप दौड़ते हैं ls --color=never, तो इसका विस्तार होगा ls --color=auto --color=never, और बाद में विकल्प पूर्वता लेता है।)


1
यह वास्तव में वह उत्तर है जिसकी मुझे तलाश थी, लेकिन मैं एसएलएम के उत्तर को चुने हुए के रूप में रखूंगा क्योंकि यह गैर-जीएनयू के मामलों को संभालता है, जैसे बीएसडी-व्युत्पन्न संस्करण (ओएस एक्स, सोलारिस और निश्चित रूप से * बीएसडी)।
आइकनोकॉस्ट

3

आप भी बस (डॉस पर) का उपयोग कर सकते हैं:

dir

यह रंग के बिना परिणाम दिखाएगा, आप उसी lsतरह से तर्क जोड़ सकते हैं , जैसे -l


2
alias ls=ls

या

unalias ls

यह स्थायी रूप से रंग को निष्क्रिय करता है।


3
बेशक यह एक शॉटगन के साथ एक मक्खी को मारने जैसा है: आप अन्य सभी विकल्पों को lsखो देते हैं, जिन्हें आपने उपनामों में जोड़ा है , और आप उन्हें केवल एक आदेश के बजाय पूरे सत्र के लिए खो देते हैं।
iconoclast

इसलिए मैंने कहा "स्थायी रूप से" :-)
Slyx

2

कई लिनक्स वितरण में यह उपयोगकर्ताओं में डिफ़ॉल्ट रूप से चालू होता है .bashrc

~/.bashrcजो लाइन दिखती है उसे संपादित करें और निकालें:

alias ls='ls --color=auto'

यदि आप भविष्य में इस मशीन पर उत्पन्न सभी नए खातों के लिए इस सुविधा को अक्षम करना चाहते हैं, तो उसी पंक्ति को यहां से हटा दें:

/etc/skel/.bashrc 

1

Centos7 पर यह सेट किया जा रहा है /etc/profile.d/colorls.sh... इस स्क्रिप्ट की अंतिम 3 लाइनें हैं:

alias ll='ls -l --color=auto' 2>/dev/null
alias l.='ls -d .* --color=auto' 2>/dev/null
alias ls='ls --color=auto' 2>/dev/null

यदि आपके पास इच्छा और अनुमतियाँ हैं ... अवांछित लाइन पर टिप्पणी करते हुए चाल चलनी चाहिए।


या unalias ls ll lआप में .bashrcअगर आपकी अनुमति नहीं है
16:42

0

रंग को बंद करने के लिए: अनलिया एल.एस.

रंग चालू करने के लिए: उर्फ ls = 'ls - रंग = ऑटो'

अस्थायी रूप से रंग को अक्षम करने के लिए: \ ls -ltr


0

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

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

के लिए ls, देखें कि क्या आपका LS_COLORSपर्यावरण चर का समर्थन करता है । Trapd00r / LS_COLORS आप कैसे tht काम करता है पता चलता है। dircolors आपको रंगों को न्यूनतम और प्रति फ़ाइल प्रकार समायोजित करने देता है। यदि आप सेट नहीं करते हैं, LS_COLORSलेकिन रंग चालू है, lsतो फ़ाइल प्रकारों और विशेषताओं का पता लगाने के लिए सिस्टम कॉल का एक गुच्छा बना देगा ताकि यह पता लगा सके कि चीजों को क्या रंग देना है। शरलॉक के पीछे के लोगों ने पाया कि सेटिंग LS_COLORSसे सभी बच सकते हैं और गति में 40x सुधार दे सकते हैं । उन्होंने क्या पाया, यह देखने के लिए उनके विवरण पढ़ें।

मैं सभी फ़ाइल प्रकारों को डिफ़ॉल्ट रंगों का उपयोग करता हूं:

$ export LS_COLORS='bd=0:ca=0:cd=0:di=0:do=0:ex=0:pi=0:fi=0:ln=0:mh=0:no=0:or=0:ow=0:sg=0:su=0:so=0:st=0:tw=0:'

यहाँ LS_COLORS फ़ाइल है जिसे मैंने dircolors को खिलाया है:

BLK                   0
CAPABILITY            0
CHR                   0
DIR                   0
DOOR                  0
EXEC                  0
FIFO                  0
FILE                  0
LINK                  0
MULTIHARDLINK         0
NORMAL                0
ORPHAN                0
OTHER_WRITABLE        0
SETGID                0
SETUID                0
SOCK                  0
STICKY                0
STICKY_OTHER_WRITABLE 0

के लिए grep, देखें कि क्या आपका समर्थन करता है GREP_COLORSया GREP_OPTIONS


ध्यान दें कि यह अभी भी lsचुने हुए रंगों के लिए GNU आउटपुट एस्केप सीक्वेंस बनाता है । इस की स्थापना के ls --color=always | od -aसाथ उस के ls --color=never | od -aसाथ उत्पादन की तुलना करें LS_COLORS
Kusalananda

असली चाल यह है कि ls | od -aपलायन नहीं है, और यही मैं चाहता हूं। lsजब यह एक टर्मिनल के लिए उत्पादन भेज रहा है केवल उन दृश्यों फेंकना चाहिए। यदि आप इसे बताते हैं, हालांकि, सुनिश्चित करें कि यह करने जा रहा है। तो, ऐसा मत करो।
ब्रायन डी फॉय

-1

@ ब्रायन-डी-फ़ोय के उत्तर पर जोड़ते हुए, ज्यादातर समय एक साधारण कष्टप्रद रंग होता है, उदाहरण के लिए निर्देशिका के अदृश्य नीले या "OTHER_WRITABLE" के आकर्षक हरे रंग को बदलना पसंद है , इसलिए हमारे 24- का उपयोग करें बिट डिस्प्ले :)

export LS_COLORS='di=04;01;38;5;33:ow=04;01;38;5;33;48;2;60;10;0'

केवल निर्देशिका रंग और उसके अन्य-योग्य रंग को फिर से परिभाषित करने के लिए

04: underline;
01: bold/brighter;
38;5;33: redifined-blue;
48;2;60;10;0: dark red background

डे ANSI कोड के बारे में अधिक पढ़ें


1
हाथ पर सवाल जीएनयू के आउटपुट से सभी रंगों को हटाने के बारे में है ls, न कि व्यक्तिगत रंगों को बदलने के बारे में।
Kusalananda

ठीक है, कैसे "एलएस 'के साथ एक विशेष रंग को बंद करने के बारे में: निर्यात LS_COLORS =' ow = 00 'के साथ केवल OTHER_WRITABLE को बंद करने के लिए।
Iggy Lake
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.