Saya suka less
, yang dapat saya gunakan untuk mengikuti log dengan +F
bendera (atau ShiftFhotkey), mencari maju dan mundur, dan umumnya bergerak bebas melalui dokumen.
Tetapi ada satu hal yang hilang less
: biasanya saya berada di akhir file, dan saya ingin melihat hal-hal baru terjadi. Di tail -f
saya hanya akan menekan enterbeberapa kali, dan baris log baru akan muncul dengan jelas dipisahkan dari baris lama.
Apakah mungkin menambahkan ini less
? Bagaimana?
Jawaban:
Ini sebenarnya bukan
tail
perilaku - itu terminalnya. Tail hanya mengirim aliran output ke stdout, yang masuk ke terminal Anda, dan Anda memasukkan garis kosong di tengah output dengan menekan enter. Ekor itu sendiri sebenarnya tidak menerima input dari Anda sama sekali. Anda dapat mengetik apa pun yang Anda inginkan dan itu akan muncul juga.less
, bagaimanapun, adalah aplikasi konsol, dan dibutuhkan input dan proses itu. Ini mengelola konsol menggunakan urutan kontrol terminal, yang merupakan cara Anda dapat menggulir. Membiarkan Anda memasukkan karakter sewenang-wenang ke aliran akan mengacaukan tampilan, dan lagi pula menggunakan input Anda lebih sedikit untuk mengontrol program.Sayangnya, sepertinya tidak ada cara untuk menandai posisi saat ini secara visual. Itu bukan permintaan fitur yang mengerikan, meskipun, dan kurang tidak masih mendapatkan fitur baru dari waktu ke waktu.
sumber
Saya menemukan pertanyaan Anda sambil mencari jawaban yang sama untuk diri saya sendiri.
Kecewa dengan jawaban yang diterima, saya menemukan solusi. Ini kurang dari ideal, tetapi memungkinkan saya untuk menandai posisi saya di log yang saya ikuti
less
, yang merupakan intinya.Saya membuat skrip kecil yang dapat dieksekusi (saya menyebutnya
marklog
) dengan konten berikut, dan meletakkannya di jalur saya:Tentu saja, ini hanya berfungsi jika Anda memiliki akses tulis ke file log - yang bisa menjadi pemecah kesepakatan dalam banyak situasi. Saya juga telah membuat versi ini yang saya gunakan untuk menulis ke file log yang saya tidak miliki (tetapi saya memiliki akses sudo):
Skrip-skrip ini hanya memberikan semacam jeda visual yang saya cari. Setidaknya ada 3 cara Anda dapat menggunakannya:
Pada titik di mana Anda biasanya menekan enter beberapa kali saat menggunakan
tail -f
, alih-alih jalankanmarklog
dari terminal lain (memberikan path ke file log sebagai argumen).Gunakan CtrlZuntuk menangguhkan
less
sehingga Anda dapat menjalankan skrip di jendela terminal yang sama, tetapi ketika Anda memposting ulang latar depanless
(menggunakanfg
, tentu saja), itu tidak akan lagi dalam mode 'ikuti', jadi Anda harus menekan ShiftFlagi ...Terakhir - dan ini mungkin cara yang paling nyaman, karena Anda tidak perlu mengetik path ke file log: Jalankan
marklog
langsung dariless
dengan mengetik!marklog %
.Less
akan mengganti nama file saat ini dengan%
. Namun,less
tidak akan menanggapi! ketika sedang dalam mode 'follow', jadi Anda harus menekan CtrlCdulu untuk keluar dari mode follow, jalankan!marklog %
, lalu ShiftFlagi.Dengan metode 3, Anda juga mendapatkan bonus tambahan dari riwayat perintah Less: Cukup tekan
!
dan kemudian gunakan panah atas untuk memilih perintah terbaru (bagi saya, selalumarklog
).Semoga ini bisa membantu seseorang sebanyak yang sudah membantu saya.
sumber
Tekan Shift+ Fdi akhir file dan semakin sedikit yang akan mulai berfungsi sebagai
tail -f
.sumber
tail -f
. Khususnya itu tidak akan menerima masukkan sebagai baris baru, yang merupakan satu - satunya poin dari pertanyaan saya. Selain itu, saya sudah menyebutkanShift+F
dalam pertanyaan (dengan kesalahan kecil, saya harus mengatakan)Saya tidak berpikir Anda bisa melakukan ini. Saya telah menggunakan
m
dan'
untuk menandai tempat-tempat menarik dan kemudian kebagian lagi tetapi ini tidak memberi Anda pemisahan yang Anda minta. Mungkin sesuatu seperti multitail akan melakukan apa yang Anda inginkan.sumber
Jawaban dari Lambart membawa saya ke solusi favorit saya. Terima kasih kepada Lambart!
Cukup masukkan mode ikuti ctrlcdan masuk
!printf "\n\n---$(date)---\n\n" >> %
. Setelah itu Anda harus menekan entersekali lagi dan tekan shiftfuntuk mulai lagi mengikuti file.sumber