Saya perlu melihat file log besar menggunakan shell bash. Saya menggunakan less
untuk membuka file, tetapi karena garis terlalu panjang ada semacam pembungkus baris / kata yang terjadi.
Karena file-file tersebut adalah log Log4J, dan ada pola di awal setiap baris, memiliki garis yang dibungkus membuat sulit untuk menganalisis output, jadi saya mulai menggunakan less -S
yang memotong garis panjang.
Tapi sekarang saya harus menggunakan tail -f
, dan itu juga membungkus output. Apakah mungkin untuk menonaktifkan pembungkus baris dalam shell bash untuk semua perintah?
Catatan: ada jawaban untuk pertanyaan berbeda yang menyebutkan urutan pelarian echo -ne '\e[?7l'
, tetapi tampaknya tidak bekerja dengan bash.
screen
, ada perintah "wrap". Dixterm
, ada-aw
opsi untuk mencegah pembungkus garis otomatis. Kemungkinan ada beberapa sumber X untuk emulator terminal lainnya. Emulator apa yang Anda gunakan?gnome-terminal
.+aw
untukxterm
:) Tapi, ini menyelesaikan masalah untuk output (misalnya,ls -l
dengan banyak pada nama Windows-ish panjang dari TPB, berfungsi dengan baik), untuk input , saat memasukkan perintah, Anda mungkin masih ingin membungkus (atau, setidaknya Anda tidak menginginkannya seperti sekarang+aw
: coba tulis di luar "batas kolom" dan kemudian mundur untuk bug GFX besar).urxvt
juga tidakrxvt
dapat menonaktifkan wraps baris.Jawaban:
Apakah Anda benar-benar perlu
tail -f
atau akan melakukan sesuatu sepertiless +F
itu? Karena kedengarannya Anda masih menginginkan pager interaktif, menurut saya akan lebih mudah untuk bertahanless
daripada menerapkannya sendiri.Catatan terakhir: sudahkah Anda mempertimbangkan
tail -f file | less
?sumber
screen
danxterm
karena emulator itu memiliki opsi untuk mencegah garis pembungkus. Tetapi ada perbedaan besar antara memotong garis dan menyembunyikan ekor garis sehingga kita bisa melihatnya jika kita mau. Menggunakantail -f file | less -S
tidak sempurna karena tampaknya menonaktifkan-f
tetapi ini adalah solusi terbaik yang saya temukan.less
secara langsung.Mencoba:
less -S +F filename
sumber
less -S
. Juga sangat bermanfaat di laptop.Menemukan jawaban yang baik dari superuser , yang bekerja di luar kotak
gnome-terminal
, dan mungkin untuk terminal lain juga:sumber
Andaikan Anda memiliki
COLUMNS
variabel yang ditentukan, Anda dapat mengeksekusijika tidak gantikan
$COLUMNS
dengan lebar kolom terminal, seperti yang diperolehstty -a
.sumber
$COLUMNS
(tidak segera diperbarui padaSIGWINCH
, hanya pada prompt berikutnya) danstty -a
(lebih sulit untuk digunakan dalam skrip) adalahtput cols
.cut
berperilaku seperti diless -S
mana garis panjang buffered dan kita dapat melihat garis lengkap menggunakan kunci arah?screen
jendela terpisah masing-masing dengantail -f | cut
script atau meniru dalam beberapa caraless
perilaku. Tetapi tidak punya solusi, saat ini.less -S
itu, itu akan mengacaukan teks berwarna, atau apa pun dengan lolos ANSI. Mungkin mengacaukan Unicode juga.less -S
lebih bermanfaat dengan teks berwarna. Anda dapat menggunakanless -S -E
untuk segera keluar - berguna untuk memotong output berwarna pada $ COLUMNS.Anda dapat menonaktifkan pembungkus baris
less
,tail
dan setiap perintah lainnya di bawah Linux sun dengan:Untuk mengembalikan penggunaan pembungkus baris:
sumber
Terminal emulator terminal (http://software.jessies.org/terminator/) memungkinkan untuk tidak membungkus garis panjang dan memiliki pengguliran horizontal (tetapi ditulis dalam Java).
sumber
terminator v1.91
.terminator
, ini salah satu yang gentledevil mengacu dan bahwa salah satu yang Anda gunakan.Dua jawaban / contoh yang bagus di sini
http://www.commandlinefu.com/commands/view/1710/tail-a-log-file-with-long-lines-truncated
Satu peringatan: setidaknya pada terminal bawaan pada cut Mac saya tampaknya tidak menangani karakter tab dengan sangat baik. Tampaknya ini menampilkannya dengan misalnya, 8 spasi tetapi hanya menghitungnya sebagai 4 ruang lebar atau sesuatu seperti itu. Dengan kata lain, jika terminal Anda memiliki lebar 80 karakter dan output Anda mengandung beberapa tab per baris, Anda harus mengatur lebarnya menjadi 60 atau sekitar itu. YMMV.
sumber
Gunakan opsi di bawah ini dengan
less
. Ini akan menonaktifkan bungkus kata dan mempertahankan warna teks, jika ditentukan.less -SR +F filename
sumber
Ada beberapa contoh pada halaman ini, dengan piping -f ... dari pengujian saya itu tidak berfungsi dengan baik, jika Anda benar-benar membutuhkan pemipaan (mis. Jika Anda perlu memipis sesuatu yang lebih, seperti grep), Anda dapat menggunakan sesuatu seperti :
mungkin bukan yang terbaik untuk kinerja tetapi berfungsi ... jika tidak ada pipping tambahan yang diperlukan Anda dapat menggunakan sesuatu yang berbeda seperti:
sumber
Ada banyak komentar yang menyimpang dari pertanyaan. Pertanyaan OP adalah
Beberapa komentar dibuat tentang fitur autowrap, yang menyatakan bahwa tidak semua terminal memilikinya. Mungkin. Tetapi (selain terminator , yang pengembangnya tidak mendokumentasikan deskripsi terminal ) semua contoh yang diberikan adalah xterm, rxvt dan beberapa mirip atau turun. Itu semua terkait.
The
+aw
pilihan dixterm
berkorespondensi denganautoWrap
sumber daya. Berkonsultasi dengan manual, dikatakan bahwadan di XTerm Control Sequences katanya
yang tentunya tidak "bergantung pada terminal pilihan Anda", karena terminal apa pun dengan kompatibilitas VT100 mendukung fitur ini. xterm dan rxvt melakukan ini, misalnya. Yang lain juga melakukannya.
Apakah fitur akan berguna untuk OP masih bisa diperdebatkan. Menekan pembungkus baris hanya satu aspek dari masalah:
COLUMNS
ke nilai "besar".cat
logfile ke layar).Ada pager yang dapat melakukan apa yang diperlukan, misalnya, multitail yang mencantumkan fitur-fiturnya
Berbasis ncurses, ia harus bekerja pada terminal yang dikutip.
sumber
vi
di dalam tipe vi
Saya percaya ada juga plugin untuk vi yang akan memberi Anda perilaku seperti ekor.
sumber
Jika Anda benar-benar ingin melihat baris penuh, Anda dapat menyalin dan menempelkan teks ke dalam editor teks seperti Atom atau Notepad ++ dan menonaktifkan wraps baris di sana.
sumber