GNU/Linux >> Belajar Linux >  >> Linux

Menambahkan perilaku ekor di mana enter menambahkan baris kosong ke less

Ini sebenarnya bukan tail perilaku -- ini adalah terminal. Tail baru saja mengirimkan aliran keluaran ke stdout, yang menuju ke terminal Anda, dan Anda memasukkan baris kosong di tengah keluaran itu dengan menekan enter. Tail sendiri sebenarnya tidak menerima masukan dari Anda sama sekali. Anda dapat mengetik apa pun yang Anda inginkan dan itu juga akan muncul.

less , bagaimanapun, adalah aplikasi konsol, dan membutuhkan input dan memprosesnya. Ini mengelola konsol menggunakan urutan kontrol terminal, begitulah cara Anda dapat menggulir. Membiarkan Anda memasukkan karakter arbitrer ke dalam aliran akan mengacaukan tampilan, dan lebih sedikit menggunakan masukan Anda untuk mengontrol program.

Sayangnya, sepertinya tidak ada cara untuk menandai posisi saat ini secara visual. Itu bukan permintaan fitur yang buruk, dan lebih sedikit tidak masih mendapatkan fitur baru dari waktu ke waktu.


Saya menemukan pertanyaan Anda saat 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 dengan less , yang merupakan intinya.

Saya membuat skrip kecil yang dapat dieksekusi (saya menyebutnya marklog ) dengan konten berikut, dan letakkan di jalur saya:

#!/bin/sh
echo >> $1
echo >> $1
echo >> $1
echo `date` ---------------------------------------------------------------------- >> $1
echo >> $1
echo >> $1

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 bukan milik saya (tetapi saya memiliki akses sudo):

#!/bin/sh
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo `date` ------------------------------------------------------------------------- >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"

Skrip ini memberikan jeda visual yang saya cari. Setidaknya ada 3 cara untuk menggunakannya:

  1. Pada titik di mana Anda biasanya menekan enter beberapa kali saat menggunakan tail -f , sebagai gantinya jalankan marklog dari terminal lain (menyediakan jalur ke file log sebagai argumen).

  2. Gunakan Ctrl Z untuk menangguhkan less sehingga Anda dapat menjalankan skrip di jendela terminal yang sama, tetapi ketika Anda mem-foreground less (menggunakan fg , tentu saja), itu tidak lagi dalam mode 'ikuti', jadi Anda harus menekan Shift F lagi...

  3. Terakhir--dan ini mungkin cara yang paling nyaman, karena Anda tidak perlu mengetikkan jalur ke file log:Jalankan marklog langsung dari less dengan mengetik !marklog % . Less akan menggantikan nama file saat ini untuk % . Namun, less tidak akan menanggapi! saat dalam mode 'ikuti', jadi Anda harus menekan Ctrl C pertama untuk keluar dari mode ikuti, jalankan !marklog % , lalu Shift F lagi.

Dengan metode 3, Anda juga mendapatkan bonus tambahan dari riwayat perintah Less:Tekan saja ! dan kemudian gunakan panah atas untuk memilih perintah terbaru (bagi saya, selalu marklog ).

Semoga ini bisa membantu seseorang sebanyak yang telah membantu saya.


Linux
  1. Debian – Di Mana Saya Harus Meletakkan Sudo Dalam Perintah Ini??

  2. Mewarnai Keluaran Ekor Dengan Sed?

  3. Diff Dimana Garis Hampir Sama Tapi Rusak?

  1. Log menonton menggunakan ekor atau kurang

  2. Cetak file, lewati baris X pertama, di Bash

  3. Mensimulasikan penekanan tombol ENTER dalam skrip bash

  1. Menambahkan karakter baris baru ke variabel shell unix

  2. Ambil 100 baris log terakhir

  3. Apakah ada cara agar teks diteruskan ke kepala, ekor, lebih sedikit, dll. untuk diwarnai?