สีที่มีคำสั่ง unix“ watch”?


119

บางคำสั่งที่ฉันใช้สีที่แสดง แต่เมื่อใช้กับนาฬิกาสีจะหายไป:

watch -n 1 node file.js

เป็นไปได้ไหมที่จะมีสีกลับมา?


คำตอบ:


147

รุ่นใหม่กว่าบางรุ่น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

30

อย่าใช้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?
André Leria

ฉันไม่เข้าใจ @ AndréLeria ... | ทีจะลบรหัสสีเหมือนwatchทำและไม่ได้ป้องกันคำสั่งจากริบหรี่
นับถือ

เป็นคำแนะนำสำหรับตัวอย่างที่ 2 ซึ่งยังไม่ให้สี หรือบางทีฉันทำอะไรผิด?
André Leria

1
@ AndréLeria "ตัวอย่าง" ที่สองเป็นตัวอย่างที่ไม่ถูกต้อง (ตามที่กล่าวไว้ในเส้น las) ประเด็นก็คือเมื่อคุณชนไปป์คุณจะสูญเสียรหัสสีเนื่องจากคุณไม่ได้เขียนลงในเทอร์มินัล มีไว้เพื่อแสดงให้เห็นว่าการพยายามชดเชยการกะพริบผิดพลาดเนื่องจากเวลาที่ล่วงเลยระหว่างการดำเนินการคำสั่งที่ชัดเจนและเป้าหมายโดยใช้ไปป์ในการทำงานบัฟเฟอร์เช่นwatch
theist

5
ในการทุบตี: while sleep <time> ; do x="$( <command> 2>&1 )" ; clear ; echo "$x" ; done- ใช้เฉพาะเปลือกในตัวเพื่อล้างหน้าจอและแสดงผลลัพธ์ดังนั้นจึงเป็นทางเลือกที่กะพริบน้อยที่สุด
GézaTörök

17

คุณสามารถทำซ้ำการดำเนินการพื้นฐานที่เรียบง่าย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

ใช่

นาฬิกาทำงานร่วมกับเอาต์พุตสี มันเป็นส่วนหนึ่งของแพ็คเกจ procps (อย่างน้อยก็ใน debian) นี่คือ bugreport สำหรับคำถามของคุณhttp://bugs.debian.org/cgi-bin/bugreport.cgi?bug=129334 ซึ่งพวกเขาตอบว่าคุณควรอัปเดตอุปกรณ์ประกอบฉาก บรรจุภัณฑ์

เช่นกับ ubuntu 11.04 แพ็คเกจนี้ใช้งานได้http://packages.debian.org/wheezy/procps

TL; DR

อัปเดตอุปกรณ์ประกอบฉาก


8

ในขณะที่คำตอบอื่น ๆ สามารถแก้ปัญหานี้ได้ แต่วิธีที่ง่ายที่สุดในการทำให้สำเร็จคือการใช้unbufferเครื่องมือ ในการใช้งานทำได้ง่ายๆ:

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

ด้วยวิธีนี้คุณไม่จำเป็นต้องค้นหาลำดับการควบคุมที่เปิดใช้งานแฟล็กของโปรแกรมของคุณ อย่างไรก็ตามข้อแม้คือนาฬิการุ่นของคุณควรรองรับ--colorธง

คุณสามารถติดตั้ง unbuffer บน Debian หรือ Ubuntu โดยใช้sudo apt-get install expectไฟล์.


'unbuffer <command>'- โดยไม่ต้องให้คำสั่งเฉพาะเพื่อใช้สิ่งนี้จะตอบคำถามได้อย่างไร?
Danoram

@Danoram มีอะไรไม่ชัดเจนสำหรับคุณ? คุณต้องการความช่วยเหลือในการแทนที่<command>ด้วยโปรแกรมเฉพาะที่คุณต้องการเรียกใช้ด้วยสีหรือไม่?
Avamander

@Avamander ฉันจะเขียนความคิดเห็นนั้นเพราะคำถามถูกตั้งค่าสถานะ หากคุณตรวจสอบประวัติการแก้ไขคุณจะเห็นว่าผู้เขียนอัปเดตคำตอบ ไม่มีอะไรไม่ชัดเจน ความคิดเห็นของฉันไม่เกี่ยวข้องอีกต่อไป ..
Danoram

1

จากคู่มือนาฬิกา:

อักขระที่ไม่พิมพ์จะถูกดึงออกจากเอาต์พุตของโปรแกรม ใช้ "cat -v" เป็นส่วนหนึ่งของไปป์ไลน์คำสั่งหากคุณต้องการดู

แต่ฉันไม่แน่ใจว่าจะใช้มันอย่างไร


5
สิ่งนี้ทำให้อักขระควบคุมสามารถมองเห็นได้ในเอาต์พุตสำหรับฉันแทนที่จะทำให้เกิดสี ตัวอย่างเช่นwatch -c "ls --color|cat -v"แสดง^[[0m^[[01;34mAgent^[[0mสำหรับบรรทัดแรก
Drew Noakes

1
ลองwatch --color ls --color=always .
Zhang LongQI
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.