ekor: Membaca seluruh file, lalu mengikuti

35

Saya ingin tail -fjenis perilaku yang membaca seluruh file dan kemudian terus mengikutinya seperti yang tertulis.


LARUTAN

Berdasarkan jawaban yang saya terima, ini bekerja: tail -f -n +1 {filename}

Mengapa kerjanya: The -foption terus "mengikuti" file dan output baris baru seperti yang tertulis ke file. The -n +1menginstruksikan tailuntuk mulai membaca file dari baris pertama. Penggunaan -n -10akan dimulai dengan sepuluh baris terakhir file.

Nak
sumber
2
Ini adalah komentar, bukan pertanyaan. Dan apakah ekor belum melakukan itu: tail -f -n 10000000000000000000mungkin akan menunjukkan semua garis kan? (mungkin 10000000000000000000 sedikit banyak: =))
Rinzwind
Saya percaya more fileNameakan melakukan hal itu
ryekayo
1
no..more tidak akan menambahkan baris tambahan yang ditambahkan ke file setelah lebih banyak dimulai.
Rinzwind
Agaknya tail -f -n 100...akan melibatkan pra-membaca file untuk menentukan jumlah baris, kecuali itu cukup cerdas untuk menentukan batas atas untuk jumlah baris berdasarkan ukuran file.
mwfearnley

Jawaban:

51

Menggunakan

tail -f -n +1

Menggunakan man tailakan memberi Anda lebih banyak detail, kutipan yang relevan berikut.

<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.
Timo Kluck
sumber
3
Bisakah Anda menambahkan "detail lebih lanjut" itu ke jawaban Anda? Tolong jelaskan mengapa dan bagaimana solusi Anda bekerja. (Ditemukan jawaban Anda dalam antrian posting berkualitas rendah.)
kraxor
1
@ kraxor Anda dapat menemukan "detail lebih lanjut" dengan menjalankan man tail(dan membacanya) seperti jawabannya, atau melakukan pencarian online untuk "tail manpage" dan membaca salah satunya. tailbekerja dengan mulai dari posisi di file, membaca (dan menampilkan) sampai akhir, kemudian memantau ukuran file meningkat. Ketika ukuran file meningkat, tailmembaca dan menampilkan dari posisi EOF sebelumnya ke akhir file baru.
waltinator
2
@waltinator saya tidak benar-benar bertanya pada diri sendiri. Saya memintanya untuk menambahkan lebih banyak detail karena posnya ditandai kualitas rendah tetapi saya tidak ingin memilih untuk menghapus karena dia memberikan jawaban yang benar.
kraxor
1
Ini persis apa yang saya cari. Saya telah menggunakan yang tail -50 {filename}sebelumnya, tetapi tidak berhasil menggabungkan keduanya.
Sonny
3

Coba ini:

watch tail {filename}

di mana {filename}file yang ingin Anda awasi. Ini akan terus memonitor perintah untuk perubahan dan menampilkan perubahan ke stdout. Ini sangat berguna.

Rick Chatham
sumber
Ini terlihat seperti alat yang sangat bagus. Meskipun tidak cukup memberikan hasil yang saya cari, saya pasti akan mengingatnya. Menggabungkannya dengan jawaban yang diterima cukup bagus:watch tail -n +1 {filename}
Sonny
Yap, sepertinya Anda menyempurnakannya!
Rick Chatham
watchbenar-benar alat yang berguna tetapi untuk menonton perubahan output dari suatu perintah tetapi untuk menonton akhir file yang ditambahkan itu jauh lebih baik untuk digunakan tail -f. --- watch tail {filename}akan membuka kembali dan membaca ulang akhir file setiap dua detik. Di sisi lain tail -fmenonton untuk pertumbuhan file dan ketika terdeteksi segera membaca bagian yang ditambahkan. tailf -fjauh lebih efisien dan reaksinya jauh lebih cepat. Selain itu akan terus menampilkan konten file dari titik di mana Anda memulai. --- watchmenimpa hasilnya setiap dua detik.
pabouk