Immer wenn ein Befehl lange Zeilen als Ausgabe generiert (z. B. wenn ls -l
ein Ordner Dateien mit langen Namen enthält), werden die langen Zeilen in die nächste Zeile umgebrochen, wodurch die Spaltenstruktur durcheinander gebracht wird.
Gibt es eine Möglichkeit, dies zu vermeiden? Etwas ähnlich der Option "nowrap" vim?
aktualisieren
Ich habe ein Problem mit der akzeptierten Antwort festgestellt:
Wenn ich einen Alias wie ":" mache alias ll="tput rmam; ls -l; tput smam"
und dann versuche, die Ausgabe von "grep" zu überprüfen: ll | grep foo
Es werden weiterhin alle Dateien gedruckt , z. B. ohne "grep".
Die Lösung, die ich gefunden habe, besteht darin, den gesamten Alias in Klammern zu setzen:
alias ll="(tput rmam; ls -l; tput smam)"
command-line
bash
Mihai Rotaru
quelle
quelle
Antworten:
Beachten Sie, dass dies nichts mit Bash zu tun hat (sobald Sie den Befehl gestartet haben, wartet Bash nur darauf, dass er beendet wird) und mit allem, was mit dem Terminal zu tun hat.
Die meisten Terminalemulatoren werden standardmäßig am rechten Rand umbrochen. Dies kann jedoch mithilfe der entsprechenden Steuersequenz deaktiviert werden , wenn der Terminalemulator dies unterstützt. dann werden lange Zeilen einfach abgeschnitten:
quelle
tput rmam; ls -l longname; tput smam
man 5 terminfo
unter Linux).Wenn Sie horizontal scrollen möchten, anstatt die Zeilen abzuschneiden, verwenden Sie
less -S
.quelle
Sie könnten eine Funktion wie folgt verwenden:
Denken Sie jedoch daran, dass Sie den Befehlen einen Präfix
nowrap
oder einen beliebigen Namen für die Funktion voranstellen müssen.quelle
Hier ist der
.bash_profile
Alias, mit dem ich den Zeilenumbruch beimgrep
Pingen automatisch deaktiviere :tput rmam
Deaktiviert das Umschließen.{ sleep 20 && tput smam & }
wird die Verpackung in 20 Sekunden reaktivieren. Das&
am Ende lässt es im Hintergrund laufen, damitgrep
es in der Zwischenzeit funktionieren kann. Sie müssen die Umhüllung erneut aktivieren, da sie sich nicht auf Ihr Terminal auswirkt. In meinem Fall haben sichtput rmam
Befehle, die länger als die Terminalbreite sind, überschrieben, anstatt in eine neue Zeile zu springen (sehr ärgerlich).Und dann
grep
macht es seine Magie, ohne Verpackung! Wenn die Ausführung jedoch länger als 20 Sekunden dauert, wird die Umhüllung schnell wiederhergestellt, sodass Sie sie je nach System möglicherweise länger einstellen möchten.BEARBEITEN:
Ein noch besserer Ansatz ist die Verwendung einer Funktion, die automatisch
tput rmam
vor undtput smam
nach Ihrem grep ausgeführt wird :Geben Sie das in Ihr
.bash_profile
und wann immer Sie rennengrp
, greift es ohne Zeilenumbruch.quelle
sleep 20
is amazing :-)Pipe es zu weniger Befehl mit -S Schalter:
Dann können Sie mit den Pfeilen nach oben / unten / links / rechts scrollen und zum Beenden q eingeben.
quelle
Versuche dies
quelle