хвіст: читання цілого файлу, а потім наступне


35

Мені б хотілося tail -fтипу поведінки, яка читає весь файл, а потім продовжує слідувати за ним, як написано.


РІШЕННЯ

На основі відповіді, яку я прийняв, це працює: tail -f -n +1 {filename}

Чому це працює:-f варіант продовжує «слідувати» файл і висновок нових лінії , як вони записані в файл. У -n +1інструктує , tailщоб почати читання файлу з першого рядка. Використання -n -10розпочнеться з останніх десяти рядків файлу.


2
Це коментар, а не питання. А хвіст ще цього не робить: tail -f -n 10000000000000000000напевно, покаже всі рядки, чи не так? (можливо, 10000000000000000000 трохи більше: =))
Rinzwind

Я вважаю, more fileNameщо зробив би саме це
ryekayo

1
ні .. більше не додаватимуть зайвих рядків до файлу після того, як було запущено більше.
Rinzwind

Імовірно tail -f -n 100..., передбачається попереднє читання файлу, щоб визначити кількість рядків, якщо тільки це не досить розумно, щоб опрацювати верхню межу для кількості рядків залежно від розміру файлу.
mwfearnley

Відповіді:


51

Використовуйте

tail -f -n +1

Використання man tailдасть вам більше деталей, випливає відповідний уривок.

<snip>Numbers having a leading plus (`+') sign are relative to the
beginning of the input, for example, ``-n +2'' starts the display at the
second line of the input.</snip>

-f      The -f option causes tail to not stop when end of file is
        reached, but rather to wait for additional data to be appended to
        the input.  The -f option is ignored if the standard input is a
        pipe, but not if it is a FIFO.

-n number
        The location is number lines.

3
Чи можете ви, будь-ласка, додати ті відповіді? Поясніть, будь ласка, чому і як працює ваше рішення. (Знайшов свою відповідь у черзі з низькою якістю дописів.)
kraxor

1
@kraxor Ви можете знайти "докладніші відомості", виконавши man tail(і прочитавши його) так, як сказано у відповіді, або в Інтернеті шукайте "хвостову сторінку" та читайте одну з них. tailпрацює, починаючи з позиції у файлі, читає (і відображає) до кінця, потім моніторинг розміру файлу збільшується. Коли розмір файлу збільшується, tailчитається і відображається з колишнього положення EOF до нового кінця файла.
waltinator

2
@waltinator Я не дуже просив себе. Я попросив його додати більше деталей, оскільки його повідомлення було позначено низькою якістю, але я не хотів голосувати за видалення, оскільки він дав правильну відповідь.
kraxor

1
Це саме те, що я шукав. Я tail -50 {filename}раніше користувався, але не мав успіху поєднувати ці два.
Сонні


3

Спробуйте це:

watch tail {filename}

де {filename}файл, за яким потрібно стежити. Це буде постійно контролювати команду щодо змін та виводити зміни в stdout. Це досить зручно.


Це виглядає як дуже приємний інструмент. Хоча це не дало результатів, які я шукав, я обов'язково пам’ятаю про це. Поєднати його з прийнятою відповіддю досить приємно:watch tail -n +1 {filename}
Сонні,

Так, схоже, ти це вдосконалив!
Рік Чатем

watchНасправді корисний інструмент, але для спостереження за зміною виводу команди, але для перегляду кінця доданого файлу це набагато краще використовувати tail -f. --- watch tail {filename}знову відкриє і перечитає кінець файлу кожні дві секунди. З іншого боку, tail -fстежить за зростанням файлу і, коли його виявляє, одразу зчитує лише додану частину. tailf -fнабагато ефективніше і реакція набагато швидша. Крім того, він буде постійно показувати вміст файлу з того місця, де ви почали. --- watchперезаписує свій висновок кожні дві секунди.
пабук
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.