ฉันมักจะใช้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
และเลื่อนลงไปที่ตัวอย่าง ...