ข้อความต่อไปนี้เป็นจริง:
watch
รันคำสั่งในเชลล์ใหม่, sh
.
.bashrc
นามแฝงls
ว่าls --color=auto
จะเปิดใช้งานสี
sh
ไม่สืบทอดหรือใช้bash
นามแฝง
ดังนั้นเมื่อwatch
วิ่งไปls
มันไม่ได้ถามหาสี แต่เป็นรุ่นเก่าธรรมดา คุณสามารถหลีกเลี่ยงสิ่งนี้ แต่ - ตามที่ aditya ชี้ให้เห็น - คุณต้องเปิดใช้สีwatch
เพื่อให้สามารถประมวลผลได้อย่างถูกต้อง
ตัวอย่างการทำงานสำหรับls
คือ:
watch --color -- ls --color=always
หากคุณไม่ผ่าน--color
การดูคุณจะเห็นรหัสสีน่าเกลียดมากมาย
ls --color
ls --color=always
ถูกตีความว่าเป็น
ls --color=auto
ไม่พิมพ์สีในนาฬิกา นี่เป็นการชี้ให้เห็นว่ามันรองรับการใช้สีจากขั้วของมันเอง
สำหรับเหตุผลเพิ่มเติมว่าทำไมเราสามารถทดสอบว่าเชลล์นาฬิกาคิดว่าเป็นเทอร์มินัลตัวจริงหรือไม่ :
$ bash -c '[[ -t 1 ]] && echo "real terminal"'
real terminal
$ watch -- "bash -c '[[ -t 1 ]] && echo "real terminal"'"
# ... nothing.
ฉันสงสัยว่ามีแอปพลิเคชั่นบางตัวกำลังดู (หรือคล้ายกัน) เพื่อบอกว่าควรเปิดสีหรือไม่