Edycja pliku tekstowego za pomocą Vima nie aktualizuje tail -f


17

Używam tail -f a.txtdo oglądania aktualizacji pliku o nazwie a.txt.

Jeśli zaktualizuję plik przy użyciu czegoś takiego jak ls -a >> a.txtw drugiej konsoli wirtualnej, zmiany zostaną wyświetlone w czasie rzeczywistym w pierwszej.

Jeśli zaktualizuję plik za pomocą Vima w drugiej konsoli wirtualnej, zmiany nie zostaną wyświetlone w pierwszej.

Niekoniecznie spodziewam się, że spowoduje to aktualizację w tym oknie - ale dlaczego dokładnie nie aktualizuje terminalu uruchamiającego tail -fpolecenie?


5
tail -fsprawdza dołączenia. tail -Fsprawdza nazwy plików.
thrig

Odpowiedzi:


31

Jeśli edytujesz plik vim, zwykle wczytuje on plik do pamięci, a następnie zapisuje nowy plik. Tak tailpracuje teraz na nieaktualny kopią pliku (który pozostaje w systemie plików do czasu tail(i każdy inny program) przestaje go używać.

Możesz tailśledzić nazwę pliku (zamiast pliku), używając:

tail -F yourfile  

Zwróć uwagę na wielkie litery F .


1
tail -FPracuje! Konsola wyświetla teraz komunikat „a.txt został zastąpiony: po zakończeniu nowego pliku” i odpowiednio się aktualizuje. Dzięki!
alex

8

Rozumiem, że zazwyczaj podczas edycji za pomocą vimedytujesz kopię pliku, która jest przenoszona na miejsce podczas zapisywania zmian na dysku. Ponieważ dzieje się tak przez unlinkwłożenie oryginału i movewłożenie nowego na miejsce, tailnie widać nowych zmian w oryginalnym pliku.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.