ls -l --color=auto | tee output.log
बिना पाइप / टी के यह रंगीन है। मैं इसे कैसे बना सकता हूं ताकि यह रंग का उपयोग करते समय रंग में रहे tee(केवल स्क्रीन पर रंगीन हो सकता है, मुझे लॉग में रंगों की परवाह नहीं है)।
ls -l --color=auto | tee output.log
बिना पाइप / टी के यह रंगीन है। मैं इसे कैसे बना सकता हूं ताकि यह रंग का उपयोग करते समय रंग में रहे tee(केवल स्क्रीन पर रंगीन हो सकता है, मुझे लॉग में रंगों की परवाह नहीं है)।
जवाबों:
बस unbufferकिसी भी कमांड को डालने से पहले यह सोचें कि यह इंटरएक्टिव आउटपुट पर लिख रहा है, भले ही यह वास्तव में किसी अन्य निष्पादन योग्य में पाइपिंग कर रहा हो। इस मामले में रंग को संरक्षित करेगा ls।
उदाहरण के लिए
unbuffer ls -l --color=auto | tee output.log
यदि आपके पास पहले से यह स्थापित नहीं है, तो उबंटू और अन्य डेबियन-ईश लिनक्स वितरण पर आप कर सकते unbufferहैं।
sudo apt-get install expect-dev
xcodebuild- कच्चे रंग का आउटपुट प्राप्त करने की कोशिश कर रहा था - इसके बजाय मुझे बिना रंग के कट -अप लाइनें मिलीं। unbuffer xcodebuild | less -Rहालांकि, त्रुटिपूर्ण रूप से काम किया।
expect-devपैकेज की आवश्यकता नहीं है । expectपर्याप्त है।
Ls विकल्प का प्रयोग करें --color=always
--color=auto एक पाइपलाइन के लिए रंग उत्पादन नहीं होगा - स्पष्ट कारणों के लिए।
मुख्य पृष्ठ निम्नलिखित कहता है:
--Color = ऑटो के साथ, रंग कोड केवल आउटपुट हैं यदि मानक आउटपुट एक टर्मिनल (tty) से जुड़ा है।
ls -lबस एक उदाहरण था। मेरे पास एक पूरी तरह से अलग कमांड (हरोकू लॉग्स) है जो कि पाइप्स के रंग को स्ट्रिप्स करता है tee। और मैं टी / पाइप को "ठीक / बदलना" चाहता हूं, न कि वह कमांड जिसे मैं निष्पादित कर रहा हूं।
ls। मेरा उत्तर देखें जो सभी कार्यक्रमों के लिए समस्या को हल करता है, जिसमें हरोकू लॉग भी शामिल है।
मैं scriptस्वीकृत उत्तर की टिप्पणी में दिए गए समाधान का विस्तार करूंगा । उपयोग करना scriptउस स्थिति में उपयोगी हो सकता है जब आप अपेक्षित पैकेज को स्थापित नहीं कर सकते या नहीं कर सकते हैं जिसमें unbufferकमांड शामिल है ।
प्रिंट ls stdout के लिए उत्पादन और फ़ाइल रंग कोड के साथ :
script -efq output.log -c "ls -l --color=auto"
कहाँ ( man script):
-e, --return Return the exit code of the child process. Uses the same format as bash termination on signal termination exit code is 128+n. -f, --flush Flush output after each write. This is nice for telecooperation: one person does `mkfifo foo; script -f foo', and another can supervise real-time what is being done using `cat foo'. -q, --quiet Be quiet (do not write start and done messages to either standard output or the typescript file).
रंगों के साथ आउटपुट फ़ाइल देखें :
less -r output.log
-eसमान है --return- दोनों की कोई आवश्यकता नहीं; -efqहै --return --flush --quiet।