Chỉnh sửa tệp văn bản với Vim không cập nhật đuôi -f


17

Tôi đang sử dụng tail -f a.txtđể xem các bản cập nhật trên một tệp có tên a.txt.

Nếu tôi cập nhật tệp bằng cách sử dụng một cái gì đó như ls -a >> a.txttrong bảng điều khiển ảo thứ hai, các thay đổi sẽ hiển thị theo thời gian thực trong lần đầu tiên.

Nếu tôi cập nhật tệp bằng Vim trong bảng điều khiển ảo thứ hai, các thay đổi sẽ không hiển thị trong tệp đầu tiên.

Tôi không nhất thiết mong đợi nó kích hoạt một bản cập nhật trong cửa sổ đó - nhưng tại sao chính xác thì bản cập nhật này không chạy tail -flệnh?


5
tail -fkiểm tra các phụ lục. tail -Fkiểm tra đổi tên tập tin.
thrig

Câu trả lời:


31

Nếu bạn chỉnh sửa một tệp vim, thông thường nó sẽ đọc tệp vào bộ nhớ, sau đó ghi một tệp mới. Vì vậy, tailhiện đang hoạt động trên một bản sao lỗi thời của tệp (vẫn còn trong hệ thống tệp cho đến khi tail(và bất kỳ chương trình nào khác) ngừng sử dụng nó.

Bạn có thể thực hiện tailtheo tên tệp (chứ không phải tệp) bằng cách sử dụng:

tail -F yourfile  

Lưu ý các trường hợp trên F .


1
tail -Flàm! Bảng điều khiển hiện đang hiển thị một thông báo như "a.txt đã được thay thế: sau phần cuối của tệp mới" và cập nhật tương ứng. Cảm ơn!
alex

8

Tôi hiểu rằng thông thường khi chỉnh sửa vim, bạn đang chỉnh sửa một bản sao của tệp, được chuyển vào vị trí khi bạn ghi các thay đổi của mình vào đĩa. Vì điều này xảy ra bằng cách unlinknhập bản gốc và đưa movebản mới vào vị trí, tailkhông thấy các thay đổi mới đối với tệp gốc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.