`Ls` कमांड से असंगत रंग आउटपुट


28

मैं एक स्थानीय कॉलेज में UNIX / Linux कोर्स के लिए एक परिचय पढ़ाता हूं और मेरे एक छात्र ने निम्नलिखित प्रश्न पूछा:

मेरी निर्देशिका में कुछ फाइलें सफेद रंग की क्यों हैं और अन्य ग्रे हैं? क्या मैं आज जो ग्रे बना रहा हूं और ग्रे ही मौजूदा फाइलें हैं?

जैसा कि मैंने इस पर ध्यान दिया, मुझे लगा कि इसका उत्तर LS_COLORSचर में होगा , लेकिन आगे की जांच से पता चला कि कमांड के साथ -lस्विच बनाम स्विच का उपयोग करते समय रंग लिस्टिंग अलग थी । निम्नलिखित स्क्रीन शॉट्स देखें:-alls

ls -l का उपयोग करके '3' नाम की फ़ाइल को सफ़ेद दिखाया गया है

-al स्विच का उपयोग करके एक ही फाइल एक ग्रे दिखाता है

ls -l'3' नाम की फ़ाइल का उपयोग सफेद के रूप में दिखाता है लेकिन -alस्विच का उपयोग करके उसी फ़ाइल को एक ग्रे दिखाता है।

क्या यह ls में बग है या किसी को पता नहीं है कि ऐसा क्यों हो रहा है?


अपना प्रश्न शीर्षक लिखिए: इस तरह के रंग का lsकमान से कोई लेना-देना नहीं है।
ड्रयू

FWIW, LS_COLORS के साथ खिलवाड़ करके आप इसके सबसे करीब पहुंच सकते हैं LS_COLORS='rs=0;1' ls -l, लेकिन यह बहुत अलग दिखता है।
wjandrea

4
@ ड्रू आप ही जानते हैं कि समस्या की जांच के बाद। जाहिर lsहै इसके आउटपुट का रंग बदल सकता है।
पाइप

@ पका: नहीं, मुझे पता है कि बहुत पहले से रंग था। यह रंग प्रदान करने की आवश्यकता नहीं है , भले ही हाल के संस्करण रंग प्रदान ls कर सकते हैं। ;-)
ड्रयू

जवाबों:


68

ऐसा लगता है जैसे कि आपके प्रॉम्प्ट-स्ट्रिंग ( $PS1) रंगों को अच्छा बनाने के लिए पात्रों पर बोल्ड विशेषता निर्धारित कर रहे हैं, और इसे परेशान नहीं कर रहे हैं। इस से आउटपुट के lsबारे में पता नहीं है, और यह बोल्ड को परेशान करता है । तो पहले रंग के उत्पादन के बाद ls, सब कुछ धुंधला दिखाई देता है।


1
हां, यह बात थी। $ PS1 सेट में अंतिम रंग परिवर्तन बोल्ड + व्हाइट (1; 37) - धन्यवाद!
बिल आर

3
आप इसे स्वीकार कर सकते हैं, फिर।
थॉमस डिकी

0

Ls का पूरा आउटपुट अंतिम सक्रिय रंग में मुद्रित किया जाएगा । यदि lsइसे बिना रंग के कहा जाता है:

$ printf '\e[0;31m color test\n'; /bin/ls
 color test
filea  fileb  filec  filed  filee  filef  fileg  fileh

फ़ाइलों की सूची को लाल रंग में प्रिंट करेगा ।

या, यदि ls के लिए कोई रंग परिवर्तन आवश्यक नहीं है, तो अंतिम रंग रहेगा:

$ mkdir t1; cd t1; touch file{a..h}
$ printf '\e[0;31m color test\n'; /bin/ls --color -l
 color test
total 0
-rw-r--r-- 1 user user 0 Feb 23 01:16 filea
-rw-r--r-- 1 user user 0 Feb 23 01:16 fileb
-rw-r--r-- 1 user user 0 Feb 23 01:16 filec
-rw-r--r-- 1 user user 0 Feb 23 01:16 filed
-rw-r--r-- 1 user user 0 Feb 23 01:16 filee
-rw-r--r-- 1 user user 0 Feb 23 01:16 filef
-rw-r--r-- 1 user user 0 Feb 23 01:16 fileg
-rw-r--r-- 1 user user 0 Feb 23 01:16 fileh

फिर भी, सभी लाल रंग में।

लेकिन, जैसे ही lsएक रंग सेट करने की आवश्यकता होती है (और कंसोल द्वारा उपयोग किए गए डिफ़ॉल्ट पर रंग रीसेट करें), तब से उपयोग किया गया रंग कंसोल डिफ़ॉल्ट होगा।

$ printf '\e[0;31m color test\n'; /bin/ls --color -la
 color test
total 8
drwxr-xr-x 2 user user 4096 Feb 23 01:16 .
drwxr-x--- 7 user user 4096 Feb 23 01:15 ..
-rw-r--r-- 1 user user    0 Feb 23 01:16 filea
-rw-r--r-- 1 user user    0 Feb 23 01:16 fileb
-rw-r--r-- 1 user user    0 Feb 23 01:16 filec
-rw-r--r-- 1 user user    0 Feb 23 01:16 filed
-rw-r--r-- 1 user user    0 Feb 23 01:16 filee
-rw-r--r-- 1 user user    0 Feb 23 01:16 filef
-rw-r--r-- 1 user user    0 Feb 23 01:16 fileg
-rw-r--r-- 1 user user    0 Feb 23 01:16 fileh

पहली तीन पंक्तियों के साथ (ब्लू डॉट तक) लाल रंग में मुद्रित।

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