ฉันมักจะใช้watchยูทิลิตี้ linux เพื่อดูผลลัพธ์ของคำสั่งซ้ำ ๆ ทุก ๆ n วินาทีเช่นในwatch df -h /some_volume/
แต่ฉันดูเหมือนจะไม่สามารถใช้watchกับชุดคำสั่ง piped เช่น:
$ watch ls -ltr|tail -n 1
ถ้าฉันทำอย่างนั้นwatchจริง ๆ กำลังดูls -ltrและกำลังส่งผ่านไปtail -n 1ซึ่งไม่แสดงผลอะไร
ถ้าฉันลองทำสิ่งนี้:
$ watch (ls -ltr|tail -n 1)
ฉันเข้าใจ
$ watch: syntax error near unexpected token `ls'
และข้อใดข้อหนึ่งต่อไปนี้ล้มเหลวด้วยเหตุผลบางประการ:
$ watch <(ls -ltr|tail -n 1)
$ watch < <(ls -ltr|tail -n 1)
$ watch $(ls -ltr|tail -n 1)
$ watch `ls -ltr|tail -n 1)`
และในที่สุดถ้าทำสิ่งนี้:
$ watch echo $(ls -ltr|tail -n 1)
ฉันไม่เห็นการเปลี่ยนแปลงในเอาต์พุตในช่วงเวลาที่กำหนดเนื่องจากคำสั่งภายใน$()รันเพียงครั้งเดียวและสตริงผลลัพธ์ที่ได้จะถูกพิมพ์ออกมาเสมอ ("เฝ้าดู") ตามตัวอักษร
ดังนั้นฉันจะทำให้watchคำสั่งทำงานร่วมกับสายโซ่ของคำสั่ง [อื่น ๆ ที่วางไว้ในสคริปต์] ได้อย่างไร
man watchและเลื่อนลงไปที่ตัวอย่าง ...