การแก้ไขไฟล์ข้อความด้วย Vim ไม่ได้อัพเดต tail -f


17

ฉันใช้ในการชมการปรับปรุงเกี่ยวกับไฟล์ที่เรียกว่าtail -f a.txta.txt

หากฉันอัปเดตไฟล์โดยใช้บางอย่างเช่นls -a >> a.txtในคอนโซลเสมือนที่สองการเปลี่ยนแปลงจะแสดงตามเวลาจริงในไฟล์แรก

หากฉันอัพเดตไฟล์โดยใช้ Vim ในคอนโซลเสมือนที่สองการเปลี่ยนแปลงจะไม่แสดงในอันแรก

ฉันไม่ได้คาดหวังว่ามันจะกระตุ้นให้มีการอัพเดทในหน้าต่างนั้น - แต่ทำไมการอัพเดทนี้ถึงไม่ได้ว่าเทอร์มินัลกำลังเรียกใช้tail -fคำสั่ง?


5
tail -fตรวจสอบเพื่อผนวก tail -Fตรวจสอบการเปลี่ยนชื่อไฟล์
thrig

คำตอบ:


31

หากคุณแก้ไขไฟล์ด้วยvimโดยทั่วไปจะอ่านไฟล์ในหน่วยความจำจากนั้นเขียนไฟล์ใหม่ ดังนั้นtailตอนนี้ทำงานกับสำเนาที่ล้าสมัยของไฟล์ (ซึ่งยังคงอยู่ในระบบไฟล์จนกระทั่งtail(และโปรแกรมอื่น ๆ ) หยุดใช้งาน

คุณสามารถทำtailตามชื่อไฟล์ (แทนไฟล์) โดยใช้:

tail -F yourfile  

หมายเหตุตัวพิมพ์ Fใหญ่


1
tail -Fทำงาน! คอนโซลกำลังแสดงข้อความเช่น "a.txt ถูกแทนที่: การติดตามไฟล์ใหม่" และอัปเดตตามลำดับ ขอบคุณ!
alex

8

ความเข้าใจของฉันคือโดยทั่วไปเมื่อทำการแก้ไขvimคุณกำลังแก้ไขสำเนาของไฟล์ซึ่งย้ายไปไว้เมื่อคุณเขียนการเปลี่ยนแปลงลงในดิสก์ เนื่องจากสิ่งนี้เกิดขึ้นจากunlinkการส่งต้นฉบับและmoveนำสิ่งใหม่เข้ามาtailไม่เห็นการเปลี่ยนแปลงใหม่ของไฟล์ต้นฉบับ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.