एलएस आउटपुट में इस हरे रंग की पृष्ठभूमि का क्या कारण है?


141

linux मशीन पर ls आउटपुट का पेंचकैप

'Ls' द्वारा दर्शाई गई दो निर्देशिकाएं हैं। आम तौर पर कहीं भी निर्देशिकाएं काले रंग की पृष्ठभूमि पर नीले रंग की होती हैं। लेकिन पहले वाला हरा पर नीला है और पढ़ने में असंभव है। ऐसा क्यों है? इसे काले रंग पर नीला कैसे करें, या कम से कम कुछ अंधेरे पर प्रकाश डालें?

यह Ubuntu 12.04 पर है, जो गनोम टर्मिनल में बैश का उपयोग कर रहा है। कॉनसोल में, नीला थोड़ा गहरा है, और पढ़ना संभव है, हालांकि बेहतर तरीके से हो सकता है।

जवाबों:


162

अपने प्रकार के आधार पर फ़ाइलों को रंगने के अलावा (ऑडियो फ़ाइलों के लिए फ़िरोज़ा, अभिलेखागार और संपीड़ित फ़ाइलों के लिए उज्ज्वल लाल, और छवियों और वीडियो के लिए बैंगनी), lsअपनी विशेषताओं के आधार पर फ़ाइलों और निर्देशिकाओं को भी रंगते हैं:

  • हरे रंग की पृष्ठभूमि के साथ काला पाठ इंगित करता है कि एक निर्देशिका मालिक उपयोगकर्ता और समूह के अलावा अन्य लोगों द्वारा लिखने योग्य है, और इसमें स्टिक बिट सेट (! o+w, +t) है।
  • हरे रंग की पृष्ठभूमि के साथ ब्लू पाठ इंगित करता है कि एक निर्देशिका के अलावा, स्वामित्व वाली उपयोगकर्ता और समूह से दूसरों के द्वारा लिखने योग्य है, और करता नहीं चिपचिपा बिट निर्धारित ( o+w, -t)।

Stephano Palazzo over Ask Ubuntu ने अलग-अलग विशेषता रंगों पर यह बहुत ही शिक्षाप्रद चित्र बनाया है:

टर्मिनल में विभिन्न रंगों का क्या अर्थ है

जैसा कि टेर्डन ने बताया, रंग सेटिंग्स के माध्यम से संशोधित किया जा सकता है dircolors। विभिन्न रंग सेटिंग्स की एक सूची के साथ पहुँचा जा सकता है dircolors --print-database

आउटपुट की प्रत्येक पंक्ति, जैसे कि BLK 40;33;01, फॉर्म की है:

[TARGET] [TEXT_STYLE];[FOREGROUND_COLOR];[BACKGROUND_COLOR]
  • TARGET रंग नियम के लिए लक्ष्य इंगित करता है

  • TEXT_STYLE पाठ शैली को इंगित करता है:

    • 00 = कोई नहीं
    • 01 = बोल्ड
    • 04 = अंडरस्कोर
    • 05 = पलक
    • 07 = उल्टा,
    • 08 = छुपा हुआ
  • FOREGROUND_COLOR अग्रभूमि रंग इंगित करता है:

    • 30 = काला
    • 31 = लाल
    • 32 = हरा
    • 33 = पीला
    • 34 = नीला,
    • 35 = मजेंटा
    • 36 = सियान
    • 37 = सफ़ेद
  • BACKGROUND_COLOR पृष्ठभूमि के रंगों को इंगित करता है:

    • 40 = काला
    • 41 = लाल
    • 42 = हरा
    • 43 = पीला
    • 44 = नीला,
    • 45 = मजेंटा
    • 46 = सियान
    • 47 = सफ़ेद

फ़ील्ड को दाईं ओर से शुरू किया जा सकता है, इसलिए उदाहरण के लिए .tar 01;31बोल्ड और लाल का मतलब है।

XTerm और अन्य आधुनिक टर्मिनल एमुलेटर 256 रंगों का समर्थन करते हैं।

XTerm 256-रंग अग्रभूमि रंग कोड का रूप है:

38;5;[FOREGROUND_COLOR]

XTerm 256-रंग पृष्ठभूमि रंग कोड के रूप में है:

48;5;[BACKGROUND_COLOR]

जहां दोनों FOREGROUND_COLORऔर BACKGROUND_COLORएक नंबर 0-255 की सीमा है। 16 और 256 रंग मोड के लिए रंग कोड की एक पूरी सूची नीचे स्क्रीनशॉट में दिखाई गई है:

16 और 256 रंग मोड रंग कोड


5
BACKGROUND_COLOR कोड FOREGROUND_COLOR के समान नहीं हैं; बैकग्राउंड कोड 40-47 हैं
रयान वी। बिसेल

38;5;एक xterm 256-रंग अग्रभूमि रंग कोड शुरू करता है। 48;5;एक xterm 256-रंग पृष्ठभूमि रंग कोड शुरू करता है। मेरी dircolors उत्पादन में सियान है 38;5;51 नहीं 36 , हालांकि परिणाम एक ही है।
स्टीवेस्लिवा

1
@stevesliva: आपकी टिप्पणी के लिए धन्यवाद। मैंने पृष्ठभूमि रंग कोड को सही ढंग से इंगित करने के लिए उत्तर को संपादित किया है, और 256-रंग अग्रभूमि और पृष्ठभूमि रंग कोड का वर्णन किया है।
थॉमस निमन

55

रंग lsअनुमतियों का प्रतिनिधित्व कर सकते हैं, कुछ प्रणालियों के लिए चूक उन निर्देशिकाओं को दिखाने के लिए है जहां हर किसी ने हरे रंग की पृष्ठभूमि के साथ अनुमतियाँ लिखी हैं:

यहां छवि विवरण दर्ज करें

आप (से ) $LS_COLORSका उपयोग करके अपने चर को संपादित करके रंग बदल सकते हैं :dircolorsman ls

   Using color to distinguish file types is disabled both by  default  and
   with  --color=never.  With --color=auto, ls emits color codes only when
   standard output is connected to a terminal.  The LS_COLORS  environment
   variable can change the settings.  Use the dircolors command to set it.

वाक्यविन्यास यहाँ कष्टप्रद है, लेकिन आप इस रंग को अपनी इच्छानुसार रंगों के साथ एक फ़ाइल बनाकर बदल सकते हैं ~/.dircolors:

dircolors -p > ~/.dircolors

यह कमांड डिफॉल्ट को प्रिंट करेगी ~/.dircolors। फिर आपको उस फ़ाइल को संपादित करना होगा और इस लाइन को बदलना होगा:

OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky

उदाहरण के लिए, इसे लाल पृष्ठभूमि पर काला पाठ बनाने के लिए ( रंग कोड की सूची के लिए यहां देखें ):

OTHER_WRITABLE 30;41 # dir that is other-writable (o+w) and not sticky

आपको सभी चूक करने की आवश्यकता नहीं है, आप बस एक ही लाइन के साथ एक फ़ाइल बना सकते हैं, जिसे आप बदलना चाहते हैं उसे फिर से परिभाषित करें। वैसे भी, एक बार जब आप फ़ाइल बना लेते हैं, तो उसे लोड करें:

eval "$(dircolors ~/.dircolors)";

और यहाँ यह कार्रवाई में है:

यहां छवि विवरण दर्ज करें

स्वचालित रूप से ऐसा evalकरने के लिए, अपनी ~/.bashrcफ़ाइल के ऊपर कमांड जोड़ें ।


8
डिफ़ॉल्ट रंग अक्सर इंगित करते हैं कि मूल लेखक हमसे और हमारी आँखों से नफरत करता है, हालांकि ...
kurtm

1
धन्यवाद। आप कभी-कभी ~ / .dirname, और कभी-कभी ~ / dircolors, और कभी-कभी ~ / .dircolors लिखते हैं? क्या वे समान हैं?
टिम

धन्यवाद। eval "$(dircolors ~/dircolors)";इसके बजाय अधिक प्रत्यक्ष तरीके से क्यों dircolors ~/dircolors?
टिम

@ समय क्योंकि dircolors केवल सेटिंग्स प्रिंट करता है, आपको उन्हें पढ़ने के लिए इसे खाली करने की आवश्यकता है।
terdon

उनके लिए किसके द्वारा पढ़ा जाए?
टिम

11

हालांकि सभी तकनीकी उत्तर सही हैं, मैं इसे थोड़ा अनौपचारिक चेतावनी मानूंगा, कि आपने उदारतापूर्वक या प्रतिलिपि criss + पार करने के लिए अधिकारों को थोड़ा कम कर दिया है ... (ज्यादातर हम सभी काम करते हैं, शुरू में काम करने के लिए, एह। ?)

इसे काले रंग पर नीला कैसे करें, ...?

एक अच्छा to de-greener "उन अधिकारों को वापस पाने के लिए जिन्हें आप सबसे अधिक चाहते हैं, यह कथन है:

chmod -R a-x,o-w,+X thatGreenFolderWithSubfolders/

सबसे अच्छी तरह से समझा कि यह क्या करता है, अगर आप अपरकेस + एक्स ute विशेष निष्पादन के उद्देश्य को समझते हैं, अर्थात विकिपीडिया देखें

यह वास्तव में केवल तभी उपयोगी होता है जब '+' के साथ प्रयोग किया जाता है और आम तौर पर सामान्य फ़ाइलों (जैसे पाठ फ़ाइलें) पर अनुमति निष्पादित किए बिना समूह या किसी बड़ी निर्देशिका ट्री में अन्य पहुँच देने के लिए -R विकल्प के साथ संयोजन में होता है, जो कि सामान्य रूप से होता है आपने बस "chmod -R a + rx ...


8

मेरे पास एक ही सवाल था, टेर्डन का उत्तर अच्छा है, लेकिन मुझे लगता है कि dirname और dircolors के बीच एक भ्रम है?

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

तो, 3 सरल कदम:

सबसे पहले, टेर्डन ने कहा, एक फ़ाइल में डिफ़ॉल्ट रंगों को कॉपी करें

dircolors -p > ~/.dircolors

फिर इस फ़ाइल को संशोधित करें। आप रंगों के लिए कुछ मूल्य पा सकते हैं, लेकिन मुझे यहाँ अधिक मिला :)

और अंत में, ~/.bashrcजब आप एक टर्मिनल खोलते हैं, तो रंग के लिए स्वचालित रूप से लोड होने के लिए अपनी फ़ाइल में निम्न पंक्ति जोड़ें :

eval 'dircolors ~/.dircolors' > /dev/null

Voilà :)


1
क्योंकि ~/.zshrcमुझे साथ जाना था if [[ -f ~/.dircolors ]] ; then eval $(dircolors -b ~/.dircolors) elif [[ -f /etc/DIR_COLORS ]] ; then eval $(dircolors -b /etc/DIR_COLORS) fi। सॉरी लाइन ब्रेक खौफनाक हैं
एरिक डी। जॉनसन

2

समस्या को जल्दी ठीक करने के लिए, (nobg पर अन्य-लिखने योग्य फ़ाइलों को पीला करें):

LS_COLORS+=':ow=01;33'

बदलें 33द्वारा 34nobg पर नीले रंग के लिए। और भी सरल, इसे nobg पर nofg बनाने के लिए:

LS_COLORS+=:ow=

अपने परिवर्तन को स्थायी बनाने के लिए, इसे अपने .profile में जोड़ें:

echo "export LS_COLORS+=':ow=01;33'" >> ~/.profile

LS_COLORS के गैर-एक्सटेंशन संबंधित नियमों को देखने के लिए:

echo "$LS_COLORS" | sed 's/:/\n/g' | grep -v '\*.'

sedप्रत्येक नियम को एक पंक्ति में रखता है और grepशुरू होने वाले नियमों को हटा देता है*.'.


lsअपने टर्मिनल पर रंगों का पता लगाने के लिए , उपयोग करने पर विचार करें

C="$LS_COLORS"
function sc () {
    echo "$LS_COLORS" | sed 's/:/\n/g' | grep -v '\*.'
}
function t () {
    ls /mnt # Or the path to your example directory.
}

फिर

LS_COLORS="$C:ow=38;5;250;48;5;025";t

जैसा कि एक अन्य जवाब में कहा गया है (थॉमस निमन का), 38;5;अग्रभूमि के एक्स-टर्म 256-रंगों के लिए उपसर्ग है, और 48;5;पृष्ठभूमि एक्स-टर्म 256-रंगों के लिए है। 256-रंग हालांकि सभी टर्मिनलों द्वारा समर्थित नहीं हैं।

यह भी देखें- अलग-अलग रंगों का मतलब ls में क्या है? - AskUbuntu पर।



0

इसे ठीक करने के लिए प्रयास करें ow LS_COLORS से अधिक पैरामीटर

उदाहरण के लिए:

~LS_COLORS='fi=0:ln=5:pi=0:so=7:bd=5:cd=5:or=31:mi=0:ex=93:*.py=36:di=40:*.zip=33:*.tgz=33'
~ls -l

यहां छवि विवरण दर्ज करें

अब आप उल्लू विकल्प जोड़ें

~export LS_COLORS='fi=0:ln=5:pi=0:so=7:bd=5:cd=5:or=31:mi=0:ex=93:*.py=36:di=40:*.zip=33:*.tgz=33:ow=0'
~ls -l

यहां छवि विवरण दर्ज करें


0

आप पाठ को पठनीय बनाने के लिए पुट्टी में हरे रंग के स्वर को बदल सकते हैं।

पोटीन खोलें और विंडो \ कलर्स पर जाएं, "एएनएसआई ग्रीन" चुनें, इसे एक गहरे हरे रंग में सेट करें (आर: 0 जी: 70 बी: 0)।

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