यूनिक्स कमांड "वॉच" के साथ रंग?


117

कुछ आदेश जो मैं डिस्प्ले रंगों का उपयोग करता हूं, लेकिन जब मैं उनका उपयोग करता हूं तो घड़ी गायब हो जाती है:

watch -n 1 node file.js

क्या किसी भी तरह से रंग वापस होना संभव है?


जवाबों:


145

watchअब के कुछ नए संस्करण रंग का समर्थन करते हैं।

उदाहरण के लिए watch --color ls -ahl --color

संबंधित


3
पर एक नज़र रखना: superuser.com/questions/125469/… (पहला उत्तर) - शायद आप इसे अपने उत्तर में लिंक कर सकते हैं।
अंटार्कक

11
मैं यहाँ का उपयोग करने के लिए आया था watchके साथ git diff। Fwiw, कि तुम में पारित करने के लिए है काम करने के लिए प्राप्त करने के लिए --color=alwaysकरने के लिए git diff(उदाहरण के लिए watch --color git diff --color=always
theabraham

31

प्रयोग नहीं करें watch ... जब आप घड़ी कार्यक्रमों का उपयोग करते हैं तो यह पता लगा सकते हैं कि वे एक टर्मिनल पर नहीं लिख रहे हैं और फिर रंग को पट्टी करें। नियंत्रण कोड रखने के लिए आपको विशिष्ट प्रोग्राम फ़्लैग का उपयोग करना चाहिए।

यदि आपको झंडे के बारे में पता नहीं है या आप नहीं हैं तो आप किसी गरीब आदमी को देख सकते हैं:

while sleep <time>; do clear; <command>; done

इसमें थोड़ा सा झिलमिलाहट होगा (घड़ी काम करता है "डबल बफर") लेकिन कुछ सामानों के लिए यह पर्याप्त उपयोगी है।

आपको डबल बफ़र्ड गरीब आदमी की घड़ी का उपयोग करने के लिए लुभाया जा सकता है

while sleep <time>; do <command> > /tmp/file; clear; cat /tmp/file; done

लेकिन तब आप फिर से "मैं एक टर्मिनल पर नहीं लिख रहा हूं" फीचर को हिट करेंगे।


हो सकता है कि का उपयोग while sleep <time>; do clear; <command> | tee /tmp/file; doneकरने के बजाय >और cat?
आंद्रे लेरिया

mmm मुझे यह नहीं मिला @ AndréLeria ... | टी जैसे रंग कोड हटा देंगे watchऔर कमांड को टिमटिमाने से नहीं रोकेंगे
आस्तिक

यह दूसरे उदाहरण के लिए एक सुझाव है, जो मुझे रंग भी नहीं देता है। या शायद मैं कुछ गलत कर रहा हूँ?
आंद्रे लेरिया

1
@ AndréLeria दूसरा "उदाहरण" एक गलत उदाहरण है (जैसा कि लास रेखा में कहा गया है)। मुद्दा यह है कि एक बार जब आप एक टर्मिनल पर नहीं लिख रहे होते हैं, तो आप एक पाइप को हिट कर देते हैं। यह प्रदर्शित करने के लिए कैसे गलत तरह बफ़र स्पष्ट और लक्ष्य आदेश निष्पादन काम करने के लिए एक पाइप का उपयोग कर के बीच के समय चूक की वजह से झिलमिलाहट क्षतिपूर्ति करने के लिए प्रयास करने के लिए हैwatch
आस्तिक

4
बैश में: while sleep <time> ; do x="$( <command> 2>&1 )" ; clear ; echo "$x" ; done- यह स्क्रीन को साफ करने और आउटपुट प्रदर्शित करने के लिए केवल शेल बिल्डिंस का उपयोग करता है, इसलिए यह सबसे कम टिमटिमाता विकल्प है।
Géza Török

18

आप watchशेल स्क्रिप्ट की कुछ पंक्तियों में मौलिक, नो-फ्रिल्स ऑपरेशन की नकल कर सकते हैं ।

$ cat cheapwatch 
#!/bin/sh

# Not quite your Rolex

while true ; do
  clear
  printf "[%s] Output of %s:\n" "$(date)" "$*"
  # "$@" <- we don't want to do it this way, just this:
  ${SHELL-/bin/sh} -c "$*"
  sleep 1  # genuine Quartz movement
done

$ ./cheapwatch ls --color  # no problem

आखिरकार, कोई बहुत ही चालाक trइस स्क्रिप्ट में एक कमांड को हैक करेगा जो स्ट्रिप्स को वर्णों को नियंत्रित करता है, और फिर उपयोगकर्ता को --colorउस तर्क को अक्षम करने के लिए उपयोग करने के लिए मजबूर करता है। कुछ समय के लिए, इस कार्यान्वयन की सरासर भोली रंग खाने वाले राक्षस को दूर रख रही है।

यदि आप ऐसी स्थिति में हैं जहां आपके watchपास --colorविकल्प नहीं है और आप पैकेज को किसी भी कारण से अपग्रेड नहीं कर सकते हैं, तो शायद आप इसे फेंक सकते हैं।


8

हाँ

रंग उत्पादन के साथ काम करता है देखो। यह प्रॉप्स पैकेज का हिस्सा है (कम से कम डेबियन में) यहाँ आपके सवाल के लिए Bugreport है http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=129334 जहां वे जवाब देते हैं, कि आपको सैप्स को अपडेट करना चाहिए पैकेज

ubuntu 11.04 जैसे उदाहरण के लिए यह पैकेज http://packages.debian.org/wheezy/procps काम करता है

tl; डॉ

अद्यतन खरीदता है


8

हालांकि अन्य उत्तर इस समस्या को हल करते हैं, लेकिन इसे पूरा करने का सबसे आसान तरीका unbufferउपकरण का उपयोग करना है। इसका उपयोग करने के लिए बस करें:

$ watch --color 'unbuffer <your-program>'

इस तरह से आपको अपने प्रोग्राम के झंडे को सक्षम करने वाले नियंत्रण अनुक्रम के लिए शिकार नहीं करना पड़ता है। हालाँकि चेतावनी यह है कि आपके संस्करण को --colorध्वज का समर्थन करना चाहिए ।

आप का उपयोग कर डेबियन या Ubuntu पर unbuffer स्थापित कर सकते हैं sudo apt-get install expect


'unbuffer <command>'- यह उपयोग करने के लिए एक विशिष्ट आदेश दिए बिना कि यह प्रश्न का उत्तर कैसे देता है?
दानोराम ११'१

@ डानोरम आपके लिए क्या अस्पष्ट है? क्या आपको <command>उन विशिष्ट प्रोग्राम के साथ मदद करने की ज़रूरत है जिन्हें आप रंगों के साथ चलाना चाहते हैं?
अवामंदर

@ अवामंदर मैंने वह टिप्पणी लिखी होगी क्योंकि सवाल झंडे का था। यदि आप संपादन इतिहास की जांच करते हैं, तो आप देखेंगे कि लेखक ने उत्तर को अपडेट किया है। कुछ भी स्पष्ट नहीं है। मेरी टिप्पणी अभी प्रासंगिक नहीं है ..
दानोरम

1

घड़ी मैनुअल से:

गैर-मुद्रण वर्ण प्रोग्राम आउटपुट से छीन लिए जाते हैं। यदि आप उन्हें देखना चाहते हैं तो कमांड पाइपलाइन के भाग के रूप में "कैट-वी" का उपयोग करें।

हालांकि, मुझे यकीन नहीं है कि इसका उपयोग कैसे किया जाए।


5
यह मेरे लिए आउटपुट में नियंत्रण वर्णों के दिखाई देने का कारण बनता है, न कि कोलोर्शन के कारण। उदाहरण के लिए पहली पंक्ति के लिए watch -c "ls --color|cat -v"शो ^[[0m^[[01;34mAgent^[[0m
ड्रू नोक

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