Bisakah kurang mengikuti (dengan menekan F) input yang di-pip (mirip dengan file)? Untuk file yang sedang ditulis, perintah
less <file>
akan mengikuti file saat menekan F.
Tetapi jika saya memiliki perintah yang menyalurkan output langsung ke kurang, seperti ini
command | less
menekan F tidak akan melakukan apa pun.
Jadi sepertinya pipa tidak bisa diikuti seperti file? Atau mungkin itu ada hubungannya dengan perintah juga menulis ke STDERR? Efek yang saya coba capai adalah selalu melihat keluaran terbaru dari perintah: sama seperti menjaga PageDown ditekan!
Sebuah komentar terkait berlaku untuk G (lanjut ke akhir): ketika memipis langsung ke kurang, itu tidak akan berhasil.
Jawaban:
Menekan Fatau Gmerek
less
mencoba untuk mencapai masukan EOF. Jika input adalah pipa,less
hang sampai pipa ditutup di sisi lain (dan bukan "tidak melakukan apa-apa").Ini dapat dikerjakan dengan menyimpan output perintah ke file sementara di latar belakang, dan kemudian dengan menggunakannya sebagai input untuk
less
:Tidak ada opsi untuk melakukan ini
less
hanya; Namun, saya akui itu akan berguna.sumber
less
hang sampai pipa ditutup di sisi lain . Itu semacam pernyataan yang menyesatkan. Yang terjadi adalah bahwa lebih sedikit panggilanread
dalam mode pemblokiran, menunggu data baru atau atau penutupan pipa.less
tidak hanya pemblokiran membaca, tetapi apakah itu dalam lingkaran menunggu EOF. Dan EOF pada pipa hanya terjadi jika sisi lainnya ditutup.less
akan memperbarui layar dalam loop itu, tidak akan ada masalah. Memblokir baca tidak ada hubungannya dengan masalah ini.less
tidak akan dapat memperbarui layar, jika tidak ada data; ketika beberapa data muncul, pemblokiran baca akan mengembalikannya, danless
akan dapat memperbarui layar tanpa utas terpisahYa, dimulai dengan versi 474. Namun tidak disebutkan dalam catatan rilis versi apa pun karena masih ada satu masalah dengan fitur ini saat ini. Di bawah ini adalah komentar dari pengelola kurang - Mark Nudelman:
Mengenai perintah F pada pipa, ini juga diperbaiki di kurang-474. Alih-alih mencari ke EOF, perintah F mencari ke akhir input buffered dan mulai membaca di sana. Namun itu tidak benar-benar dapat digunakan karena ketika Anda menekan CTRL-C untuk menghentikan perintah F, itu membunuh proses menghasilkan output. Saya tidak yakin bagaimana cara memperbaikinya.
Sampai masalah ini diperbaiki dalam waktu yang kurang dapat diselesaikan dengan menggunakan fitur shell. Lihat jawaban saya untuk Apakah ada cara untuk keluar dari mode ikut “kurang” tanpa menghentikan proses lain dalam pipa? pertanyaan untuk detail.
Sebagai referensi, masalah dengan F yang tidak bekerja dengan pipa memiliki nomor referensi 300 pada daftar bug yang dikenal dan berjudul Perintah F tidak bekerja pada input yang disalurkan.
Ini bekerja mulai dari versi 466. Mengutip dari catatan rilis untuk versi ini:
sumber
Dari halaman manual kurang
jadi ini seharusnya bekerja, dan itu benar-benar bekerja untuk saya.
sumber