Chcę odczytać cały plik i sprawić, by czekał na dane wejściowe, tak jak tail -f
z wyświetlonym kompletnym plikiem.
Długość tego pliku zawsze się zmienia, ponieważ jest to .log
plik.
Jak mogę to zrobić, jeśli nie znam długości pliku?
command-line
tail
malworm
źródło
źródło
less
ma klawisz „F”. Przydatne, jeśli potrzebujesz interakcji.Odpowiedzi:
tail
pozwala dodać,-n
aby określić liczbę linii do wyświetlenia od końca, których można używać w połączeniu z-f
. Jeśli argumentem-n
rozpoczynającym się od+
tego jest liczba wierszy od początku (0
i1
wyświetlenie całego pliku,2
co oznacza pominięcie pierwszego wiersza, jak wskazuje @Ben). Więc po prostu zrób:Jeśli pliki dziennika się obracać, można dodać
--retry
(lub połączyć-f and --retry
się-F
jak sugeruje @Hagen)Zauważ również, że w graficznym terminalu możesz użyć myszy i PageUp/, PageDownaby przewinąć z powrotem do historii (zakładając, że twój bufor jest wystarczająco duży), ta informacja pozostaje tam, nawet jeśli używasz Ctrl+, Caby wyjść
tail
. Jeśli używaszless
tego, jest to znacznie mniej wygodne i AFAIK musisz używać klawiatury do przewijania, a ja nie wiem, jak powstrzymać sięless
od dezinicjalizacji termcap, jeśli zapomnisz go uruchomić-X
.źródło
+
) jest realizowane bardziej efektywnie.+1
za nauczenie mnie o+0
.-F
Zamiast-f
rotacyjnych logów możesz chciećtail -n +1
pokazuje mi początek pliku itail -n +2
pomija jedną linię. Myślę, że ten numer jest numerem pierwszego wyświetlanego wiersza.Jest lepszy sposób na osiągnięcie tego celu:
Pokaże cały plik, ma pełną moc
less
i będzie czekać na nowe dane wejściowe. Jeśli chcesz przestać czekać na dane wejściowe i przeczytać określoną część, możesz ją zatrzymać^C
i wznowić za pomocąF
.F
Komenda jest zawsze dostępnyless
, jeśli zdecydujesz się obserwować zmiany mając otwarte w plikuless
, uderzającF
będzie go włączyć. Dzięki hiergiltdiestfu i symbol wieloznaczny za wskazanie tego.źródło
tail
. Dzięki za wskazówkę; Nigdy bym nie pomyślał o użyciuless
do tego. Uwaga dla innych: Możesz także uruchomić,less <file>
a następnie wpisaćF
.Oprócz odpowiedzi / u / Anthon możesz zrobić coś takiego:
Ta
-0
opcja tail jest równoważna-n 0
, co oznacza: dispaly 0 linii. Ale-f
wyświetli nowe linie.Nie potrzebujesz aparatów ortodontycznych
{ }
. Użyłem ich, ponieważ czasami chcesz w jakiś sposób przekierować deskryptory plików. Na przykład:Zauważony przez Bena Milwooda: możesz mieć stan wyścigu, w którym plik rośnie między końcem
cat
operacji a początkiemtail
operacji. Ale znowu jest to „akademicki” problem rozwiązania akademickiego.źródło
cat
końcem atail
początkiem, nie zobaczysz tych linii. Jest mało prawdopodobne, aby była to wielka sprawa, ale powód, aby preferować czystetail
rozwiązanie.{ cat; tail -n +0 -f; } < file
to naprawi wyścig, ponieważ ogon wydrukuje wszelkie nowe dane, które pojawią się międzycat
wyjściem atail
startem. Oczywiście czyni tocat
zbędnym. Przekierowanie odbywa się tylko raz, atail
stdin to deskryptor pliku, którycat
już odczytał EOF, więc jego bieżąca pozycja jest tam, gdzie jestcat
zatrzymana. Możesz to przetestować, umieszczającecho foo >> file
wewnątrz{}
, aby za każdym razem stworzyć wyścig.watch
polecenie powinno zrobić to za ciebie.Możesz także spróbować
Będziesz miał więcej opcji z
less
poleceniem do przewijania pliku, gdy mówisz, że jest to duży plik.źródło
+F
jest opcja