संरक्षित रंगों के साथ बैश वॉच कमांड


57

से man watch:

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

तो cat -vअगर मैं रंगीन आउटपुट देखना चाहता हूँ तो मैं इसका उपयोग कैसे करूँ :

watch ls -al --color

जवाबों:


63

सही आज्ञा है

watch --color "ls -a1 --color"

यह मैन पेज या --help स्क्रीन में प्रलेखित नहीं है। मुझे इसे खोजने के लिए तार का उपयोग करना होगा।


@ PawełGo Pawcicki नेवरमाइंड, पहले से ही यह अच्छा पर पाया, हालांकि, यह phpit के साथ काम करने के लिए नहीं मिल सका।
आइके

1
मेरी घड़ी v0.3.0 है और मैं उबंटू 10.0 पर हूं
Paweł Goickcicki

2
मैंने संस्करण 0.3.0 भी किया है और सरल "ls - कलर" के लिए वॉच कमांड काम करेगा, लेकिन किसी कारण से अधिक जटिल परिदृश्य ऐसा नहीं करते हैं: watch --color "sudo iwlist wlan0 scanning | egrep 'Quality|ESSID' | egrep --color -i 'foobar|$'"रंग खाएंगे :(
गणित

@ मथ: अपने सिंगल और डबल कोट्स को स्वैप करने की कोशिश करें।
डेनिस विलियमसन

watchProcps (सबसे Linux distros पर डिफ़ॉल्ट, मेरा मानना है) से एक है --colorv3.3.2 के बाद से विकल्प।
साल्के

27

मुझे लगता है कि 'वॉच' कमांड से यह संभव नहीं हो सकता। यहाँ यह करने का एक लंबा तरीका है:

while true; do clear; date;echo;ls -al --color; sleep 2; done

आप इसे एक स्क्रिप्ट में रख सकते हैं, उदाहरण के लिए:

echo "while true; do clear; date;echo;\$*;sleep 2; done" > watch2
chmod +x watch2
./watch2 ls -al --color

स्पष्ट करने के लिए, यहां मुझे लगता है कि यह 'वॉच' कमांड के साथ संभव नहीं है। देखें कि क्या होता है यदि आप बिल्ली का उपयोग करते हैं -v:

watch "ls -al --color|cat -v"

यह आपको रंग नियंत्रण वर्ण दिखाता है ... जो मुझे लगता है कि वह नहीं है जो आप चाहते हैं।


man watchस्पष्ट रूप से पता चलता है कि यह संभव है कि बिना विघटित किया जाए watch
Paweł Go Pawcicki

यह नहीं कहता कि आप रंग देख पाएंगे। यह कहता है कि आप गैर-मुद्रण योग्य वर्ण देख पाएंगे। मेरे कमांड को ऊपर cat -vसे देखें कि क्या man watchबात हो रही है।
20

1
आप पलक की अवधि को कम करके a) डेटा को एक चर में प्रदर्शित करने के लिए इकट्ठा करके कम कर सकते हैं, ख) स्क्रीन को साफ़ करते हुए, ग) चर को मुद्रित कर रहे हैं।
निक रूसो

1
@NickRusso सुझाव के लिए धन्यवाद। कुछ इस तरह झिलमिलाहट को कम करता है:while true; do out=$(date;echo;ls -al --color);clear;echo $out;sleep 2;done
केविन मार्क

1
@ केविनमार्क: आपको कई लाइनों को संभालने के लिए उद्धरणों का उपयोग करना चाहिए echo "$out":। stackoverflow.com/q/2414150/86967
nobar

6

यदि आप एक मैक का उपयोग कर रहे हैं, तो मेरी तरह, watchHomebrew से रंग का समर्थन नहीं करता है।

क्या आप चाहते fswatch लेकिन यह Homebrew अभी तक नहीं है। इसे स्थापित करने के लिए आप थोड़ा और जटिल बनाना चाहते हैं

https://raw.github.com/mlevin2/homebrew/116b43eaef08d89054c2f43579113b37b4a2abd3‌​/Library/Formula/fswatch.rb

उपयोग के लिए यह SO उत्तर देखें ।


2
यह केवल फाइलसिस्टम के लिए काम करता है, जबकि watch
ब्राइस

fswatch होमब्रेव 0.9.5
code_monk

1

अद्यतन : watchनिश्चित समस्या के नवीनतम संस्करणों को बाहर करता है। इसलिए, यदि रंग watch --colorगलत हैं, तो शायद इसे अपडेट करना बेहतर है (मेरे सिस्टम पर, यह procpsपैकेज में है)।


watch --colorमेरे अनुभव में रंग का समर्थन सीमित है (हालांकि इसके लिए पर्याप्त है ls -l --color)। यहाँ कुछ अतिरिक्त सुविधाओं के साथ @ davr के उत्तर का मेरा संस्करण है, सबसे महत्वपूर्ण रूप से कम झिलमिलाना। आप इसे अपने .bashrc में रख सकते हैं और इसका उपयोग कर सकते हैं cwatch ls -l --color

# `refresh cmd` executes clears the terminal and prints
# the output of `cmd` in it.
function refresh {
  tput clear || exit 2; # Clear screen. Almost same as echo -en '\033[2J';
  bash -ic "$@";
}

# Like watch, but with color
function cwatch {
   while true; do
     CMD="$@";
     # Cache output to prevent flicker. Assigning to variable
     # also removes trailing newline.
     output=`refresh "$CMD"`;
     # Exit if ^C was pressed while command was executing or there was an error.
     exitcode=$?; [ $exitcode -ne 0 ] && exit $exitcode
     printf '%s' "$output";  # Almost the same as echo $output
     sleep 1;
   done;
}

आप जैसी चीजों को भी आजमा सकते हैं

cwatch 'ls -l --color | head -n `tput lines`'

यदि आपके टर्मिनल में आउटपुट से कम लाइनें हैं। यह तभी काम करता है जब सभी लाइनें टर्मिनल की चौड़ाई से कम हों, हालाँकि। मेरे लिए सबसे अच्छा समाधान यह है:

cwatch 'let lines=`tput lines`-2; ls -l --color | head -n $lines'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.