Tôi thường sử dụng watch
tiệ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 watch
với một loạt các lệnh như:
$ watch ls -ltr|tail -n 1
Nếu tôi làm điều đó, watch
thực sự đang xem ls -ltr
và đầu ra đang được chuyển đến tail -n 1
mà 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 watch
lệ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 watch
và cuộn xuống các ví dụ ...