Terminaldeki hat sargısı nasıl devre dışı bırakılır?


55

Bir bash kabuğu kullanarak büyük günlük dosyalarını görüntülemem gerekiyor. lessDosyaları açmak için kullanıyordum , ancak satırlar çok uzun olduğundan, devam eden bir tür satır / sözcük var.

Dosyalar Log4J logları olduğundan ve her satırın başında bir desen olduğu için, satırları sarmak çıktıyı analiz etmeyi zorlaştırır, bu yüzden less -Suzun satırları kesen kullanmaya başladım .

Ama şimdi kullanmam gerekiyor tail -fve aynı zamanda çizgi de çıktıyı sarıyor. Tüm komutlar için bash kabuğundaki satır kaydırmayı devre dışı bırakmak mümkün müdür?

Not: kaçış sırasından bahseden farklı bir sorunun cevabı var echo -ne '\e[?7l', ancak bashta çalışmıyor gibi görünüyor.


4
Bunun seçtiğiniz kabuk (bash) ile ilgili olmadığını, ancak terminal seçiminize bağlı olduğunu unutmayın (xterm, Terminal, gnome-terminal, konsole,…). Bkz. “Terminal”, “kabuk”, “tty” ve “konsol” arasındaki tam fark nedir?
Gilles 'SO- kötülük olmayı'

4
Gilles'un bahsettiği gibi, bu bir terminal öykünücüsü meselesidir. Örneğin, içinde screenbir "wrap" komutu var. İçinde xterm, -awotomatik hat sarmayı önleme seçeneği bulunmaktadır. Muhtemelen, diğer terminal emülatörleri için bazı X kaynakları vardır. Hangi emülatörü kullanıyorsunuz?
Arcege

Ben kullanıyorum gnome-terminal.
nunaxe

1
@Arcege: Aslında, öyle +awiçin xterm:) Ama bunun için konuyu çözer çıkışı (açık, örneğin ls -liçin, sorunsuz çalışıyor TPB uzun Windows imsi isimler üzerinde bir grup ile) girişi , bir komut girerken, muhtemelen hala isteyin (veya en azından şu anda açık olmasını istemiyorsanız +aw: "sütun kenarlığı" nın ötesine yazmaya çalışın ve sonra büyük bir GFX hatası için geri dönmeyi deneyin).
Emanuel Berg

Bu arada, ne görünüyor urxvtne de rxvtçizgi atkıları devre dışı bırakabilir.
Emanuel Berg

Yanıtlar:


7

Aslında gerekiyor mu tail -ffalan gibi olur less +Fmusunuz? Hala etkileşimli bir çağrı cihazı istiyormuş gibi göründüğü için, bana kendinden lessbirini uygulamaktan daha fazla yapışmanın daha kolay olacağını düşünüyorum .

Son bir not: düşündün tail -f file | lessmü?


Bazı öyküler yaptım screenve xtermöykünücüler satır silmelerini önleme seçeneklerine sahipti. Fakat çizgiyi kesmek ve çizginin kuyruğunu gizlemek arasında büyük bir fark vardır, böylece istersek izleyebiliriz. Kullanmak tail -f file | less -S, devre dışı bırakıldığı göründüğü kadar mükemmel değil -fama bulduğum en iyi çözüm.
nunaxe

@Boris Marcos'un cevabı belki de daha iyidir. lessDoğrudan kullanır .
AnthonyD973

51

Deneyin:

less -S +F filename

  • CtrlcTailing işlemini durdurmak için tuşuna basın ve şimdi imleç tuşlarını kullanarak sola ve sağa hareket edebilirsiniz.
  • ShiftfTailing işlemine devam etmek için basın
  • Basın Ctrlc, qçıkmak için

Bu harika! Terminalimin iki ekrana yayılmış olmasına rağmen, dün bunu okuduğumdan beri geniş çıktıları alıyorum less -S. Ayrıca dizüstü bilgisayarda çok yararlı.
Jonatan Öström


15

Eğer var düşünürsek COLUMNSdeğişken tanımlanmış, sen yürütebileceği

tail -f your-app.log | cut -c -$COLUMNS

Aksi takdirde $COLUMNS, terminalin sütun genişlikleri ile ikame edilir stty -a.


2
Diğer bir alternatif $COLUMNS(derhal güncellenmez SIGWINCH, yalnızca bir sonraki istemde) ve stty -a(komut dosyasında kullanılması daha zordur) tput cols.
Manatwork

Teşekkürler enzotib. Bu işe yarar, ancak çizgiyi keser ve uzun çizgilerin sonunu göremiyoruz. Is yapmak mümkündür cutgibi davranmaya less -Suzun çizgi tamponlu nerede ve biz yön tuşlarını kullanarak tam bir çizgi görebilirsiniz?
nunaxe

Uhm, o kadar basit değil. Kablolu çözümleri örneğin screenher biri davranış tail -f | cutbiçimini taklit eden bir komut dosyası içeren iki ayrı pencere olarak düşünüyorum less. Ancak şu anda bir çözüm yok.
enzotib 11:11

1
Not: kesim sadece baytları sayar; aksine less -S, renkli metin veya ANSI kaçar herhangi bir şeyi mahvedecek. Unicode'u da mahvedebilir.
ELLIOTTCABLE

Evet, less -Srenkli metinlerle daha kullanışlıdır. less -S -EHemen çıkmak için kullanabilirsiniz - renkli çıktıyı $ COLUMNS ile kesmek için yararlıdır.
15'te 16

4

Satır için kaydırma devre dışı bırakabilir less, tailve Linux güneş altında her komutu:

tput rmam

Satır sarma işlemini geri yüklemek için:

tput smam

3

Sonlandırıcı (http://software.jessies.org/terminator/) terminal emülatörü, uzun satırları sarmamaya izin verir ve yatay kaydırmaya sahiptir (ancak Java'da yazılmıştır).


Bunu nasıl etkinleştiririm? Varsayılan olarak işe görünmüyor.
Ağustos'ta

Bu yazı itibariyle, yatay kaydırma varsayılan olarak açıktır. Harika, platformlar arası öneri. Teşekkürler!
user7089

Lütfen bu özelliği nasıl etkinleştireceğini göstererek bu cevabı daha iyi yapın. Tercihler’de arama yaptım ve bu seçeneği bulamıyorum. FWIW, koşuyorum terminator v1.91.
AnthonyK

2
@AnthonyK adı paylaşan iki ilgisiz terminal emülatörleri var terminator, bu bir gentledevil bahsediyor ve bu bir kullandığınız.
jlliagre

3

Burada iki iyi cevap / örnekler

http://www.commandlinefu.com/commands/view/1710/tail-a-log-file-with-long-lines-truncated

tail -f logfile.log | cut -b 1-80

tail -f logfile.log | cut -b -$(tput cols)

Bir uyarı: en azından Mac kesiğimde yerleşik terminalde sekme karakterlerini çok iyi işlemiş görünmüyor. Görünüşe göre onları 8 boşlukla gösteriyor ama sadece 4 boşluk ya da bunun gibi bir şey olarak hesaplıyor. Başka bir deyişle, terminaliniz 80 karakter genişliğinde ve çıktınız satır başına birkaç sekme içeriyorsa, genişliği belki 60 veya benzeri bir değere ayarlamanız gerekir. YMMV.


2

İle aşağıdaki seçenekleri kullanın less. Sözcük kaydırmayı devre dışı bırakır ve belirtilirse metin renklerini korur.

less -SR +F filename


2

Bu sayfada -f ... ile kuyruk borularının birkaç örneği var, testlerimden düzgün çalışmaz, eğer gerçekten borulamaya ihtiyacınız varsa (örn. Grep gibi daha fazla boruya ihtiyaç duyuyorsanız) :

watch -n 1 'tail -n $(($LINES-3)) file.log | cut -c -$COLUMNS'

Muhtemelen performans için en iyisi değil ama işe yarar ... başka bir ekstra pip gerekmiyorsa, farklı bir şeyler kullanabilirsiniz

less -S +F file.log

2

Bu sorudan sapan birçok yorum var. OP'nin sorusu şuydu:

Ama şimdi kullanmam gerekiyor tail -fve aynı zamanda çizgi de çıktıyı sarıyor. Tüm komutlar için bash kabuğundaki satır kaydırmayı devre dışı bırakmak mümkün müdür?

Tüm terminallerde olmadığını belirten autowrap özelliği hakkında bazı yorumlar yapıldı. Belki. Ancak ( geliştiricileri uçbirim tanımlaması olmayan terminatörlerin yanı sıra ) verilen örneklerin tümü xterm, rxvt ve bazılarına benzeyen veya alçalmış olanlardır. Bunların hepsi ilgili.

Bu +awseçenek kaynağa xtermkarşılık gelir autoWrap. Kılavuza bakıldığında, diyor ki

   autoWrap (class AutoWrap)
           Specifies  whether  or  not  auto-wraparound should be enabled.
           This is the same as the VT102 DECAWM.  The default is "true".

ve XTerm Kontrol Dizileri'nde yazıyor

CSI ? Pm h
          ...
          DEC Private Mode Set (DECSET).
            Ps = 7  -> Wraparound Mode (DECAWM).

VT100 uyumluluğuna sahip herhangi bir terminal özelliği desteklediğinden, kesinlikle "terminal seçiminize bağlı" değildir. Örneğin, xterm ve rxvt bunu yapar. Diğerleri de öyle.

Özelliğin OP için faydalı olup olmadığı tartışmalıdır. Satır sargısını bastırmak, sorunun yalnızca bir yönüdür:

  • Kabuk, terminalin genişliğini bilir - ancak COLUMNS"büyük" bir değere ayarlanarak geçersiz kılınabilir .
  • Tabii ki bu, uygulamaların sağ tarafta çok fazla zaman harcayacağı anlamına gelir (ve bazıları yanlış olsun, yine de yeni bir satıra başlayacaktır).
  • OP muhtemelen geniş terminali kullanılabilir hale getirmek için uygulamanın sola / sağa kaydırılacağını varsaydı. (terminatör bunu yapar - kısmen - ancak diğer dezavantajları, terminali sadece catekrana bir günlük dosyası oluşturmak için kullananlar hariç, bunu iptal eder ).
  • OP'nin aslında aradığı şey, özellikle günlük dosyalarını görüntülemek için satır kaydırmayı devre dışı bırakması söylenebilecek bir dizi araç. Terminal genel kullanım için yeterince iyi çalışıyorsa, terminal içinde kullanılan araçların seçimi ile ilgili değildir.

İhtiyaç duyulanı yapabilecek çağrı cihazları vardır, örneğin, özelliklerinde listelenen çoklu görev

Satır kaydırma kapatılabilir, bundan sonra imleç tuşları ile sola / sağa kaydırılabilir

Hemşirelik tabanlı olması, belirtilen terminallerin herhangi birinde çalışmalıdır.


1

vi

vi türü içinde

:set nowrap

Ayrıca, size kuyruk benzeri davranışlar verecek vi için bir eklenti olduğuna inanıyorum.


-1

Çizgileri tam olarak görmek istiyorsanız, metni Atom veya Notepad ++ gibi bir metin düzenleyicisine kopyalayıp yapıştırabilir ve oradaki satır sarmayı devre dışı bırakabilirsiniz.

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.