ইউনিক্স কমান্ড সহ "রং" দেখুন?


117

কিছু আদেশ যা আমি প্রদর্শন রঙ ব্যবহার করি, কিন্তু যখন আমি তাদের ঘড়ির সাথে ব্যবহার করি তখন রঙগুলি অদৃশ্য হয়ে যায়:

watch -n 1 node file.js

কোনওভাবে আবার রঙগুলি রাখা কি সম্ভব?


উত্তর:


145

watchরঙের এখনকার কয়েকটি নতুন সংস্করণ সমর্থন করে।

উদাহরণস্বরূপ watch --color ls -ahl --color

সম্পর্কিত


3
এক নজরে দেখুন: superuser.com/questions/125469/… (প্রথম উত্তর) - সম্ভবত আপনি নিজের উত্তরে এটি লিঙ্ক করতে পারেন।
aatdark

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?
আন্দ্রে লেরিয়া

মিমিম আমি এটি @ অ্যান্ড্রেলিয়া ... পাই না টী বর্ণের নাম মত কালার কোড সরাবে watchএবং ঝিকিমিকি থেকে কমান্ড বাধা দেয় না
আস্তিক

এটি দ্বিতীয় উদাহরণের জন্য একটি পরামর্শ, যা আমাকে রঙ দেয় না। নাকি আমি কিছু ভুল করছি?
আন্দ্রে লেরিয়া

1
@ আন্দ্রেলিরিয়া দ্বিতীয় "উদাহরণ" একটি ভুল উদাহরণ (যেমনটি লাস লাইনে বলা হয়েছে)। মুল বক্তব্যটি হ'ল একবার আপনি কোনও পাইপ মারলে আপনি রঙিন কোডগুলি হারাবেন কারণ আপনি কোনও টার্মিনালে লিখছেন না। কিন্তু সেখানে দেখানোর জন্য কিভাবে ভুল মত বাফার স্পষ্ট এবং লক্ষ্য কমান্ড সঞ্চালনের কাজ একটি নল ব্যবহার মধ্যে সময় ভ্রষ্টতা কারণে দপদপ করে ওঠার ক্ষতিপূরণ চেষ্টা হয়watch
আস্তিক

4
while sleep <time> ; do x="$( <command> 2>&1 )" ; clear ; echo "$x" ; doneব্যাশে : - এটি স্ক্রিনটি সাফ করার জন্য এবং আউটপুট প্রদর্শনের জন্য কেবল শেল বিল্টিন ব্যবহার করে, তাই স্বল্পতম ঝাঁকুনির বিকল্প being
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

হ্যাঁ

ঘড়ি রঙ আউটপুট সঙ্গে কাজ করে। এটি প্রোপস প্যাকেজের অংশ (কমপক্ষে ডেবিয়ানে) এখানে আপনার প্রশ্নের জন্য বাগ্রেপোর্ট http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=129334 যেখানে তারা উত্তর দেয়, আপনাকে প্রোম্পস আপডেট করা উচিত প্যাকেজ

যেমন উবুন্টু ১১.০৪ সহ এই প্যাকেজটি http://packages.debian.org/wheezy/procps এ কাজ করে

TL; ড

আপডেটগুলি


8

অন্যান্য উত্তরগুলি এই সমস্যাটি সমাধান করার সময়, এটি সম্পাদন করার সহজতম উপায় হল unbufferসরঞ্জামটি ব্যবহার করা । এটি সহজভাবে ব্যবহার করতে:

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

এই পদ্ধতিতে আপনার প্রোগ্রামের পতাকাগুলি সক্ষম করার জন্য নিয়ন্ত্রণ সিকোয়েন্সের জন্য আপনাকে শিকার করতে হবে না। সতর্কবাণীটি হ'ল আপনার ঘড়ির সংস্করণটি --colorপতাকাটিকে সমর্থন করবে ।

আপনি ডেবিয়ান বা উবুন্টু ব্যবহার করে আনবুফার ইনস্টল করতে পারেন 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 .
ঝাং লংকিউআই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.