บางคำสั่งที่ฉันใช้สีที่แสดง แต่เมื่อใช้กับนาฬิกาสีจะหายไป:
watch -n 1 node file.js
เป็นไปได้ไหมที่จะมีสีกลับมา?
บางคำสั่งที่ฉันใช้สีที่แสดง แต่เมื่อใช้กับนาฬิกาสีจะหายไป:
watch -n 1 node file.js
เป็นไปได้ไหมที่จะมีสีกลับมา?
คำตอบ:
watch
กับgit diff
. FWIW เพื่อให้ได้ว่าการทำงานที่คุณต้องผ่าน--color=always
ไปgit diff
(เช่นwatch --color git diff --color=always
.
อย่าใช้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
ทำและไม่ได้ป้องกันคำสั่งจากริบหรี่
watch
while sleep <time> ; do x="$( <command> 2>&1 )" ; clear ; echo "$x" ; done
- ใช้เฉพาะเปลือกในตัวเพื่อล้างหน้าจอและแสดงผลลัพธ์ดังนั้นจึงเป็นทางเลือกที่กะพริบน้อยที่สุด
คุณสามารถทำซ้ำการดำเนินการพื้นฐานที่เรียบง่าย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
ตัวเลือกและคุณไม่สามารถอัปเกรดแพ็กเกจได้ไม่ว่าด้วยเหตุผลใดคุณอาจจะโยนสิ่งนี้เข้าไป
ใช่
นาฬิกาทำงานร่วมกับเอาต์พุตสี มันเป็นส่วนหนึ่งของแพ็คเกจ procps (อย่างน้อยก็ใน debian) นี่คือ bugreport สำหรับคำถามของคุณhttp://bugs.debian.org/cgi-bin/bugreport.cgi?bug=129334 ซึ่งพวกเขาตอบว่าคุณควรอัปเดตอุปกรณ์ประกอบฉาก บรรจุภัณฑ์
เช่นกับ ubuntu 11.04 แพ็คเกจนี้ใช้งานได้http://packages.debian.org/wheezy/procps
TL; DR
อัปเดตอุปกรณ์ประกอบฉาก
ในขณะที่คำตอบอื่น ๆ สามารถแก้ปัญหานี้ได้ แต่วิธีที่ง่ายที่สุดในการทำให้สำเร็จคือการใช้unbuffer
เครื่องมือ ในการใช้งานทำได้ง่ายๆ:
$ watch --color 'unbuffer <your-program>'
ด้วยวิธีนี้คุณไม่จำเป็นต้องค้นหาลำดับการควบคุมที่เปิดใช้งานแฟล็กของโปรแกรมของคุณ อย่างไรก็ตามข้อแม้คือนาฬิการุ่นของคุณควรรองรับ--color
ธง
คุณสามารถติดตั้ง unbuffer บน Debian หรือ Ubuntu โดยใช้sudo apt-get install expect
ไฟล์.
'unbuffer <command>'
- โดยไม่ต้องให้คำสั่งเฉพาะเพื่อใช้สิ่งนี้จะตอบคำถามได้อย่างไร?
<command>
ด้วยโปรแกรมเฉพาะที่คุณต้องการเรียกใช้ด้วยสีหรือไม่?
จากคู่มือนาฬิกา:
อักขระที่ไม่พิมพ์จะถูกดึงออกจากเอาต์พุตของโปรแกรม ใช้ "cat -v" เป็นส่วนหนึ่งของไปป์ไลน์คำสั่งหากคุณต้องการดู
แต่ฉันไม่แน่ใจว่าจะใช้มันอย่างไร
watch -c "ls --color|cat -v"
แสดง^[[0m^[[01;34mAgent^[[0m
สำหรับบรรทัดแรก
watch --color ls --color=always .