সংরক্ষণ করা রঙ সহ বাশ ওয়াচ কমান্ড


57

থেকে man watch:

মুদ্রণবিহীন অক্ষরগুলি প্রোগ্রাম আউটপুট থেকে ছিনিয়ে নেওয়া হয়। আপনি যদি কমান্ড পাইপলাইন দেখতে চান তবে "ক্যাট-ভি" ব্যবহার করুন।

সুতরাং আমি cat -vযদি রঙিন আউটপুট থেকে দেখতে চাই তবে আমি কীভাবে ব্যবহার করব:

watch ls -al --color

উত্তর:


63

সঠিক আদেশ

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

এটি ম্যান পৃষ্ঠা বা --হেল্প স্ক্রিনে নথিভুক্ত নয়। এটি খুঁজে পেতে আমাকে স্ট্রিং ব্যবহার করতে হবে।


@ পাউয়েগোগিকি নেভামাইন্ড, এটি ইতিমধ্যে গুরুতর হিসাবে পাওয়া গেছে, যদিও, এটি phpunit এর সাথে কাজ করতে পারেনি।
ইক্কে

1
আমার ঘড়িটি v0.3.0 এবং আমি উবুন্টু 10.0 এ
রয়েছি

2
আমি ০.০.০ সংস্করণও করেছি এবং সাধারণ "ls - রঙ" এর জন্য ওয়াচ কমান্ডটি কাজ করবে তবে কোনও কারণে আরও জটিল পরিস্থিতিগুলি ব্যবহার watch --color "sudo iwlist wlan0 scanning | egrep 'Quality|ESSID' | egrep --color -i 'foobar|$'"করবে না: রঙগুলি খাবে :(
গণিতের

@ ম্যাথ: আপনার একক এবং ডাবল উদ্ধৃতি অদলবদল করার চেষ্টা করুন।
ডেনিস উইলিয়ামসন

watchProcps (অধিকাংশ লিনাক্স ডিস্ট্রো ডিফল্ট, আমি বিশ্বাস করি) থেকে হয়েছে --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
পাউয়ে গোকিকি

এটি বলে না যে আপনি রঙ দেখতে সক্ষম হবেন। এটি বলে যে আপনি মুদ্রণযোগ্য অক্ষরগুলি দেখতে সক্ষম হবেন। cat -vকি man watchবিষয়ে কথা বলছে তা দেখতে উপরে আমার কমান্ডটি ব্যবহার করে দেখুন ।
davr

1
আপনি ঝাঁকুনির সময়কালকে কিছুটা হ্রাস করতে পারেন ক) ভেরিয়েবলের জন্য প্রদর্শিত তথ্য সংগ্রহ করা, খ) স্ক্রিন সাফ করা, গ) ভেরিয়েবল মুদ্রণ করা।
নিক রুসো

1
@ নিকরুসো এই পরামর্শের জন্য ধন্যবাদ। এরকম কিছু while true; do out=$(date;echo;ls -al --color);clear;echo $out;sleep 2;done
কেভিন মার্ক

1
@KevinMark: আপনি একাধিক লাইনের হ্যান্ডেল করতে কোট ব্যবহার করা উচিত: echo "$out"stackoverflow.com/q/2414150/86967
nobar

6

আপনি যদি watchহোমব্রু থেকে আমার মতো কোনও ম্যাক ব্যবহার করেন তবে রঙটি সমর্থন করে না।

আপনি যা চান তা fswatch তবে এটি এখনও হোমব্রু নয়। এটি ইনস্টল করতে আপনি কিছুটা আরও বিভ্রান্ত করতে চাইবেন

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

ব্যবহারের জন্য এই তাই উত্তর দেখুন ।


2
এটি কেবল ফাইলসিস্টেমের জন্যই কাজ করে, যখন watchএকটি কমান্ডের জন্য প্রয়োগ হয়
ব্রাইস

fswatch হোমব্রু 0.9.5
কোড_monk

1

আপডেট : watchসমস্যার সমাধানের সর্বশেষতম সংস্করণগুলি সরিয়ে দেয়। সুতরাং, যদি রঙগুলি watch --colorভুল হয় তবে কেবল এটি আপডেট করা সম্ভবত ভাল (আমার সিস্টেমে এটি procpsপ্যাকেজে রয়েছে)।


রঙিন সমর্থনটি watch --colorআমার অভিজ্ঞতায় সীমাবদ্ধ (যদিও এর জন্য যথেষ্ট ls -l --color)। এখানে কিছু অতিরিক্ত বৈশিষ্ট্য সহ আমার গুরুত্বপূর্ণ @ ড্যাভরের উত্তরের সংস্করণটি রয়েছে, সবচেয়ে গুরুত্বপূর্ণভাবে ফ্লিকারটি হ্রাস। আপনি এটি আপনার .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`'

যদি আপনার টার্মিনালের আউটপুটটির চেয়ে কম লাইন থাকে। যদিও সমস্ত লাইন টার্মিনালের প্রস্থের চেয়ে কম হয় তবেই এটি কাজ করে। আমি এটির জন্য সবচেয়ে ভাল কাজটি জানি is

cwatch 'let lines=`tput lines`-2; ls -l --color | head -n $lines'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.