Tôi thường sử dụng watchtiện ích linux để theo dõi đầu ra của lệnh liên tục cứ sau n giây, như trongwatch df -h /some_volume/
Nhưng tôi dường như không thể sử dụng watchvới một loạt các lệnh như:
$ watch ls -ltr|tail -n 1
Nếu tôi làm điều đó, watchthực sự đang xem ls -ltrvà đầu ra đang được chuyển đến tail -n 1mà không đầu ra bất cứ điều gì.
Nếu tôi thử điều này:
$ watch (ls -ltr|tail -n 1)
tôi có
$ watch: syntax error near unexpected token `ls'
Và bất kỳ lý do nào sau đây đều thất bại vì lý do này hay lý do khác:
$ watch <(ls -ltr|tail -n 1)
$ watch < <(ls -ltr|tail -n 1)
$ watch $(ls -ltr|tail -n 1)
$ watch `ls -ltr|tail -n 1)`
Và cuối cùng nếu làm điều này:
$ watch echo $(ls -ltr|tail -n 1)
Tôi thấy không có thay đổi nào về đầu ra ở khoảng thời gian nhất định vì lệnh bên trong chỉ $()được chạy một lần và chuỗi đầu ra kết quả luôn được in ("đã xem") dưới dạng chữ.
Vì vậy, làm cách nào để làm cho watchlệnh hoạt động với một chuỗi các lệnh [khác với việc đưa chúng vào trong một tập lệnh]?
man watchvà cuộn xuống các ví dụ ...