Ich muss große Protokolldateien mit einer Bash-Shell anzeigen. Ich habe less
die Dateien mit geöffnet, aber da die Zeilen zu lang sind, wird eine Art Zeilen- / Wortumbruch ausgeführt.
Da es sich bei den Dateien um Log4J-Protokolle handelt und sich am Anfang jeder Zeile ein Muster befindet, ist es schwierig, die Ausgabe zu analysieren, wenn Zeilen umbrochen werden. Daher habe ich begonnen, less -S
lange Zeilen zu hacken.
Aber jetzt muss ich verwenden tail -f
, und es bricht auch die Ausgabe zeilenweise um. Ist es möglich, den Zeilenumbruch in einer Bash-Shell für alle Befehle zu deaktivieren?
Hinweis: Es gibt eine Antwort auf eine andere Frage, in der die Escape-Sequenz erwähnt echo -ne '\e[?7l'
wird, diese scheint jedoch bei bash nicht zu funktionieren.
screen
gibt es in einen "Wrap" -Befehl. Inxterm
gibt es eine-aw
Option, um automatische Zeilenumbrüche zu verhindern. Wahrscheinlich gibt es einige X-Ressourcen für andere Terminalemulatoren. Welchen Emulator benutzt du?gnome-terminal
.+aw
fürxterm
:) Aber das löst das Problem für die Ausgabe (zBls -l
mit ein paar langen Windows-ish-Namen von TPB funktioniert es einwandfrei), für die Eingabe , wenn Sie einen Befehl eingeben, wahrscheinlich immer noch Sie möchten einen Zeilenumbruch (oder zumindest möchten Sie ihn nicht so haben, wie er jetzt ist+aw
: Versuchen Sie, über die "Spaltengrenze" hinaus zu schreiben, und suchen Sie dann nach einem großen GFX-Fehler).urxvt
nochrxvt
deaktiviert werden.Antworten:
Brauchen Sie eigentlich
tail -f
oder möchten Sie etwasless +F
tun? Da es sich so anhört, als ob Sie immer noch einen interaktiven Pager wünschen, scheint es mir viel einfacher zu sein, sich daran zu halten,less
als einen selbst neu zu implementieren.Ein letzter Hinweis: Haben Sie darüber nachgedacht
tail -f file | less
?quelle
screen
undxterm
als diese Emulatoren Optionen zum Verhindern von Zeilenumbrüchen gemacht. Es gibt jedoch einen großen Unterschied zwischen dem Abschneiden der Linie und dem Ausblenden des Endes der Linie, damit wir sie anzeigen können, wenn wir möchten. Das Verwendentail -f file | less -S
ist nicht perfekt, da es das zu deaktivieren scheint,-f
aber es ist die beste Lösung, die ich gefunden habe.less
direkt.Versuchen:
less -S +F filename
quelle
less -S
. Auch sehr nützlich auf dem Laptop.Wir haben eine gute Antwort vom Superuser gefunden , die sofort funktioniert
gnome-terminal
und wahrscheinlich auch für andere Terminals:quelle
Angenommen, Sie haben die
COLUMNS
Variable definiert, können Sie ausführenandernfalls ersetzen Sie
$COLUMNS
mit der Spaltenbreite des Terminals, wie von erhaltenstty -a
.quelle
$COLUMNS
(wird nicht sofort aktualisiertSIGWINCH
, sondern erst bei der nächsten Eingabeaufforderung) undstty -a
(im Skript schwerer zu verwenden) isttput cols
.cut
Verhalten so zu gestalten,less -S
dass die lange Leitung gepuffert ist und wir die komplette Leitung mit den Richtungstasten sehen können?screen
Fenster vor, die jeweils eintail -f | cut
oder ein Skript enthalten, das dasless
Verhalten auf irgendeine Weise emuliert . Aber noch keine Lösung.less -S
wird es farbigen Text vermasseln oder irgendetwas mit ANSI-Escapezeichen. Könnte auch Unicode vermasseln.less -S
ist nützlicher bei farbigem Text. Mit können Sieless -S -E
sofort beenden - nützlich zum Ausschneiden von Farbausgaben bei $ COLUMNS.Sie können Zeilenumbrüche für deaktivieren
less
,tail
und alle anderen Befehl unter der Sonne Linux mit:So stellen Sie den Zeilenumbruch wieder her:
quelle
Der Terminator-Emulator (http://software.jessies.org/terminator/) erlaubt es, keine langen Zeilen umzubrechen, und verfügt über einen horizontalen Bildlauf (ist jedoch in Java geschrieben).
quelle
terminator v1.91
.terminator
, dieses die gentledevil bezieht sich auf und dass man die Sie verwenden.Zwei gute Antworten / Beispiele hier
http://www.commandlinefu.com/commands/view/1710/tail-a-log-file-with-long-lines-truncated
Eine Einschränkung: Zumindest beim eingebauten Terminal auf meinem Mac scheint cut mit Tabulatorzeichen nicht sehr gut zurecht zu kommen. Es sieht so aus, als würden sie mit z. B. 8 Leerzeichen angezeigt, aber sie werden einfach als 4 Leerzeichen breit oder so ähnlich berechnet. Mit anderen Worten, wenn Ihr Terminal 80 Zeichen breit ist und Ihre Ausgabe mehrere Tabulatoren pro Zeile enthält, müssen Sie die Breite auf 60 oder so ähnlich einstellen. YMMV.
quelle
Verwenden Sie die folgenden Optionen mit
less
. Der Zeilenumbruch wird deaktiviert, und die Textfarben werden beibehalten, sofern angegeben.less -SR +F filename
quelle
Es gibt ein paar Beispiele auf dieser Seite, in denen der Schwanz mit -f ... aus meinen Tests nicht richtig funktioniert. Wenn Sie wirklich Piping benötigen (z. B. wenn Sie mehr Piping benötigen, wie z. B. grep), können Sie etwas wie verwenden :
Wahrscheinlich nicht die beste Leistung, aber sie funktioniert. Andernfalls können Sie Folgendes verwenden, wenn kein zusätzliches Pipping erforderlich ist:
quelle
Es gibt viele Kommentare, die von der Frage abweichen. Die Frage von OP war
Es wurden einige Kommentare zur Autowrap-Funktion abgegeben, die besagten, dass nicht alle Terminals über diese Funktion verfügen. Vielleicht. Aber (abgesehen von terminator , dessen Entwickler keine Terminalbeschreibung dokumentieren ) waren alle angegebenen Beispiele xterm, rxvt und einige ähnlich oder absteigend. Das sind alle miteinander verwandt.
Die
+aw
Option inxterm
entspricht derautoWrap
Ressource. In der Bedienungsanleitung steht, dassund in XTerm Control Sequences heißt es
Dies hängt sicherlich nicht von der Wahl Ihres Terminals ab, da jedes Terminal mit VT100-Kompatibilität diese Funktion unterstützt. xterm und rxvt machen das zum Beispiel. Die anderen auch.
Ob die Funktion für OP nützlich wäre, ist umstritten. Das Unterdrücken von Zeilenumbrüchen ist nur ein Aspekt des Problems:
COLUMNS
ein "großer" Wert festgelegt wird.cat
Anzeigen einer Protokolldatei auf dem Bildschirm verwenden).Es gibt Pager, die das tun können, was benötigt wird, z. B. Multitail, das in seinen Funktionen aufgelistet ist
Da es auf ncurses basiert, sollte es auf jedem der genannten Terminals funktionieren.
quelle
vi
innerhalb vi Typ
Ich glaube, es gibt auch ein Plugin für vi, das dir schwanzartiges Verhalten verleiht.
quelle
Wenn Sie wirklich die vollständigen Zeilen sehen möchten, können Sie den Text kopieren und in einen Texteditor wie Atom oder Notepad ++ einfügen und dort Zeilenumbrüche deaktivieren.
quelle