GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum kann ich im Terminal nicht scrollen?

Um das Terminal neu zu initialisieren, genügt ein einfacher reset wird das beheben. Für weitere Informationen und Optionen man reset


Die Antwort von @James Henstridge auf diese AskUbuntu-Frage scheint den Fehler korrekt zu identifizieren, da das Terminal in einem "Cursor-Adressierungs" -Modus hängen bleibt, was auch immer das bedeutet.

Seine erste Lösung, der Befehl $ tput rmcup , funktioniert, obwohl es nicht viel Erklärung gibt. Also habe ich versucht, das herauszufinden.

man tput sagt uns das

Die tput Dienstprogramm verwendet den terminfo Datenbank, um der Shell die Werte terminalabhängiger Fähigkeiten und Informationen zur Verfügung zu stellen (siehe sh(1)), das Terminal zu initialisieren oder zurückzusetzen oder den Langnamen des angeforderten Terminaltyps zurückzugeben.

terminfo ist auch nicht sehr sinnvoll dokumentiert. Die umfassendste Quelle, die ich finden kann, ist ein Artikel auf tldp.org. Offenbar terminfo ist eine Datenbank mit verschiedenen Terminals und deren Befehlen und Fähigkeiten. Vermutlich hat jede Linux-Installation eine? Sie können also verschiedene Terminals verwenden?

man terminfo gibt an, dass seine Dateien in /etc/terminfo/*/* sind , aber auf Ubuntu 16.04 fand ich dort nur eine README. Die echten Dateien sind in /lib/terminfo/*/*; z.B. /lib/terminfo/l/linux , die für die meisten Leser wahrscheinlich die relevanteste Datei ist? Ich kann es nicht sagen, da diese Dateien nicht für Menschen lesbar sind. Der oben verlinkte tldp.org-Artikel besagt, dass infocmp kann verwendet werden, um ihre Quelle zu sehen, aber das ist nicht wahr:

$ infocmp /lib/terminfo/l/linux
infocmp: couldn't open terminfo file /lib/terminfo/l/linux.

Der Artikel erwähnt auch Quellcodedateien /etc/termcap und /etc/terminfo.src , aber diese sind in Ubuntu 16.04 nicht vorhanden. Ich habe eine Reihe von /usr/share/vte/termcap*/ gefunden Verzeichnisse, die menschenlesbares xterm enthalten Dateien. Ich müsste raten, dass dies alles mit dem GNOME-Terminal verbunden ist, das ich verwende, das standardmäßig mit Ubuntu verwendet wird, aber ich bin es leid, herauszufinden, wie.

Die man Seite für terminfo hat aber noch ein hilfreiches Jota. Unter seinen 'Predefined Capabilities' befindet sich ein 'Variable String' exit_ca_mode mit 'capname' ("Funktionsname", nehme ich an) rmcup mit der Beschreibung strings to end programs using cup . Die Beschreibung ist nicht sehr hilfreich, aber der Variablenname ist; dies muss sich auf die Fähigkeit eines Terminals beziehen, den 'Cursor Addressing Mode' zu verlassen, in dem das Terminal feststeckt.

Also $ tput rmcup muss tput verwenden um auf terminfo zuzugreifen Datenbank und aktivieren Sie den exit_ca_mode des aktuellen Terminals Fähigkeit rmcup , wodurch der Cursor-Adressierungsmodus beendet wird und das Terminal zu seinem normalen Bildlaufverhalten zurückkehrt.


Linux
  1. Warum hat der Server meine IP blockiert?

  2. Warum haben mehrere Instanzen von Mate-Terminal dieselbe Pid?

  3. Warum kann ich die Ausgabe von Hintergrundprozessen sehen?

  4. Warum ist das Drucken auf stdout so langsam? Kann es beschleunigt werden?

  5. Warum ist das .bss-Segment erforderlich?

Warum ich rxvt als Terminal verwende

Die Linux-Befehlszeile kann aus der Ferne Spaß machen

Sehen Sie sich YouTube-Videos am Linux-Terminal an

Warum ich Alpine immer noch für E-Mail am Linux-Terminal liebe

Wie kann ich versehentliches Kopieren/Einfügen im Terminal verhindern oder unterbrechen?

Warum kann ich nicht `tail -f /proc/$pid/fd/1` ausführen?