Tôi có một chương trình ghi nhật ký đầu ra của nó vào tệp * .out khi chạy. Tôi thiết lập một kịch bản bash để chạy nhiều lần khác nhau, do đó, mỗi lần chạy ghi vào một tệp * .out khác. Tôi thấy rằng tôi có thể tail
các file * .out gần đây nhất như thế này:Đuôi tệp mới nhất
watch tail $(ls -tr *.out | tail -n1)
Vấn đề có vẻ là rằng tham khảo $()
chỉ được thực hiện một lần. Vì vậy, khi lần chạy đầu tiên kết thúc, watch
tiếp tục đến tail
cùng một tệp * .out, mặc dù hiện có tệp * .out mới hơn.
Làm cách nào tôi có thể thay đổi điều này để chuyển đến tệp * .out tiếp theo sau khi một lần chạy kết thúc?
Tôi đã thử thực hiện một số lồng dấu ngoặc kép và dấu ngoặc đơn, nhưng tôi thực sự không hiểu chi tiết tham chiếu. Các vấn đề phức tạp bởi thực tế là watch
chuyển lệnh của nó tới sh
, mặc dù tôi đang sử dụng bash.
Điểm thưởng: sẽ rất tuyệt nếu điều này có thể được sửa đổi thành tail -f
thay vì chỉ lặp lại watch
mỗi n
giây.
hm..Tôi thực sự không hiểu trường hợp sử dụng. Bạn có muốn đọc một vài tệp trong thời gian thực không? nếu có, nó dễ sử dụng hơn 'đuôi -f * .out' – pivanchy
Tôi thường đồng ý với @pivanchy, mặc dù đáng nói đến là phần đuôi' POS' không được đảm bảo để xử lý nhiều hơn một tệp tại một thời điểm. – kojiro
@pivanchy đó là giải pháp. Tôi không nhận ra điều đó thật đơn giản. –