Daha az kullanarak bir boru izleyin?


25

Borulu bir girişi (bir dosyaya benzer şekilde) (F'ye basarak) daha az takip edebilir mi? Yazılan bir dosya için komut

less <file>

F tuşuna basıldığında dosyayı takip eder

Ancak, boruların doğrudan daha azına çıkış yapmasını emredersem, bunun gibi

command | less

F düğmesine basıldığında hiçbir şey yapmaz.

Öyle görünüyor ki borular takip edilemiyor gibi görünüyor dosyalar? Ya da belki de STDERR'e yazma komutuyla ilgisi var? Ulaşmaya çalıştığım etki her zaman komutun en son çıktısını görür: PageDown'u basılı tutmak gibi!

İlgili bir açıklama G için geçerlidir (sonuna kadar): doğrudan daha az boruya bağlandığında çalışmaz.


Yanıtlar:


21

Basmak Fveya Gmarkaları lessgiriş EOF ulaşmaya çalışır. Giriş bir boru lessise, diğer taraftan boru kapanana kadar kilitlenir ("hiçbir şey yapmaz").

Bu için girdi olarak kullanarak daha sonra arka planda geçici bir dosyaya komut çıktısını kaydetme ve çalışılan edilebilir less:

command > /tmp/x &
less +F /tmp/x; kill %; rm /tmp/x

lessSadece bunu yapmak için bir seçenek yoktur ; Ancak, yararlı olacağını itiraf ediyorum.


Giriş bir lessboru ise, diğer tarafta boru kapanana kadar kilitlenir . Bu bir çeşit yanıltıcı ifade. Ne olur daha az aramaları olmasıdır readengelleyici modunda, yeni veriler için bekleyen veya veya borunun kapatılması.
Piotr Dobrogost

3
Boru girişinde F veya G düğmesine basıldıktan sonra lesssadece bir blokaj okuması olmaz, aynı zamanda EOF için bekleyen bir döngüde bulunur. Borunun üzerindeki bir EOF ancak diğer tarafı kapalıysa gerçekleşir.
mik

3
Eğer lessbu döngü içinde ekran güncellerdi bir sorun olmaz. Okumayı engelleme bu konuyla çok az ilgili.
mik

1
@Flow, bu sorunun bir asılması değil, yalnızca bu durumda beklenen bir bekleme - EOF'ye erişildiğinde dosyada daha fazla veri beklemek (bu arada kapalı bir boru için olmayacak), veya takip modundan çıkmak için bir ara vermek için
mik

1
@PiotrDobrogost, okumayı engelleyen bir lessveri yoksa ekranı güncelleyemezdi; Bazı veriler göründüğünde, okuma engelleme onu geri döndürür ve lessayrı bir konu olmadan ekranı güncelleyebilir
mik

6

Borulu bir girişi (bir dosyaya benzer şekilde) (F'ye basarak) daha az takip edebilir mi?

Evet, 474 sürümü ile başlayarak. Ancak, şu anda bu özellik ile ilgili bir sorun olduğu için henüz herhangi bir sürümün sürüm notlarında bahsedilmemiştir. Aşağıda daha az hakemden bir yorum var - Mark Nudelman:

Borulardaki F komutuyla ilgili olarak, bu 474'ten daha az olarak düzeltildi. F komutu, EOF'yi aramak yerine arabelleğe alınan girişin sonuna bakar ve orada okumaya başlar. Ancak bu gerçekten kullanılamaz çünkü F komutunu durdurmak için CTRL-C tuşuna bastığınızda, çıktı üreten işlemi öldürür. Bunu nasıl düzelteceğimi bilmiyorum.

Bu sorun daha az giderilinceye kadar, bir kabuk özelliklerini kullanarak sorunu çözebilirsiniz. Benim Bkz cevabı için İş'in orada boruda diğer işlemleri durmadan herhangi çıkmak için bir yol “daha az” takip moduna? ayrıntılar için soru.

Başvuru için, F ile çalışmayan borularla ilgili sorun, bilinen hatalar listesinde referans numarası 300'e sahiptir ve F komutu boru girişi üzerinde çalışmaz.


İlgili bir açıklama G için geçerlidir (sonuna kadar): doğrudan daha az boruya bağlandığında çalışmaz.

466 sürümünden itibaren çalışır . Bu sürüm için sürüm notlarından alıntı :

Yeni komut ESC-G, bir borudaki o anda tamponlanmış verilerin sonuna gider


ESC-G komutu 23 Ağustos günü yayınladığı sürümünde 466 yılında 2014 tanıtıldı
mik

@mik Daha sonra sürüm 471'deki sürüm notlarında bir hata gibi görünüyor. Sağol, düzeltildi.
Piotr Dobrogost

Hata değil, kararlı bir sürümden bu yana yalnızca sürüm 458'den bu yana yapılan değişiklikleri aşamalı olarak listeler. Ancak, ESC-G komutuyla kararlı bir sürüm yoktur.
mik

ESC-G komutu şimdi kararlı bir sürümde (481): "Genel kullanım için 16 Ekim 2015 daha az-481 yayımlandı".
mik,

Güncelleme: Borulardaki F komutuyla ilgili olarak, bu 474'ten daha az olarak düzeltildi. F komutu, EOF'yi aramak yerine arabelleğe alınan girişin sonuna bakar ve orada okumaya başlar. Ancak bu gerçekten kullanılamaz çünkü F komutunu durdurmak için ctrl-C tuşlarına bastığınızda, işlem üreten çıktıyı öldürür. Bunu nasıl düzelteceğimi bilmiyorum. - Mark Nudelman, daha az
koruyucusu

2

Küçük adam sayfasından

[Keyboard] COMMANDS [...]

   F      Scroll  forward, and keep trying to read when the end of file is reached.  Normally this command would be used when already
          at the end of the file.  It is a way to monitor the tail of a file which is growing while it is being viewed.  (The  behav‐
          ior is similar to the "tail -f" command.)

bu işe yaramalı ve aslında benim için çalışıyor.


1
Bu komut, @mik tarafından açıklanan boru ile kullanıldığında farklı davranır ve açıkça OP'nin aradığı değildir.
Piotr Dobrogost
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.