GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi ne puis-je pas faire défiler dans le terminal ?

Pour réinitialiser le terminal, un simple reset va résoudre ce problème. Pour plus d'informations et d'options, man reset


La réponse de @James Henstridge à cette question AskUbuntu semble identifier correctement l'erreur car le terminal reste bloqué dans un mode "d'adressage du curseur", quoi que cela signifie.

Sa première solution, la commande $ tput rmcup , fonctionne, bien qu'il n'y ait pas beaucoup d'explications. J'ai donc essayé de comprendre cela.

man tput nous dit que

Le tput l'utilitaire utilise le terminfo base de données pour rendre les valeurs des capacités et des informations dépendant du terminal disponibles pour le shell (voir sh(1)), pour initialiser ou réinitialiser le terminal, ou renvoyer le nom long du type de terminal demandé.

terminfo n'est pas non plus très utilement documenté. La source la plus complète que je puisse trouver est un article de tldp.org. Évidemment terminfo est une base de données de différents terminaux et des commandes et capacités dont ils disposent. Vraisemblablement, chaque installation Linux en a un? Vous pouvez donc utiliser différents terminaux ?

man terminfo indique que ses fichiers sont en /etc/terminfo/*/* , mais sur Ubuntu 16.04, je n'y ai trouvé qu'un fichier README. Les vrais fichiers sont en /lib/terminfo/*/*; par exemple. /lib/terminfo/l/linux , qui est probablement le fichier le plus pertinent pour la plupart des lecteurs ? Je ne peux pas le dire, car ces fichiers ne sont pas lisibles par l'homme. L'article tldp.org lié ci-dessus indique que infocmp peut être utilisé pour voir leur source, mais ce n'est pas vrai :

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

L'article mentionne également les fichiers de code source /etc/termcap et /etc/terminfo.src , mais ceux-ci n'existent pas dans Ubuntu 16.04. J'ai trouvé un ensemble de /usr/share/vte/termcap*/ répertoires contenant xterm lisible par l'homme des dossiers. Je dois deviner que tout cela se connecte au terminal GNOME que j'utilise, c'est-à-dire Ubuntu par défaut, mais j'en ai assez d'essayer de comprendre comment.

Le man page pour terminfo a une autre note utile, cependant. Sous ses 'capacités prédéfinies' se trouve une 'chaîne variable' exit_ca_mode avec 'capname' ("nom de la capacité", je suppose) rmcup avec la description strings to end programs using cup . La description n'est pas très utile, mais le nom de la variable l'est; cela doit faire référence à la capacité d'un terminal à quitter le "mode d'adressage du curseur", dans lequel le terminal est bloqué.

Donc, $ tput rmcup doit utiliser tput pour accéder au terminfo base de données et activer le exit_ca_mode du terminal courant capacité rmcup , qui tue le mode d'adressage du curseur et ramène le terminal à son comportement de défilement normal.


Linux
  1. Pourquoi le serveur a-t-il bloqué mon IP ?

  2. Pourquoi plusieurs instances de Mate-terminal ont-elles le même pid ?

  3. Pourquoi le segment .bss est-il requis ?

  4. Comment vérifier HZ dans le terminal?

  5. Comment puis-je afficher l'attribut WMClass d'une fenêtre dans Xorg (linux) ?

Pourquoi j'utilise rxvt comme terminal

La ligne de commande Linux peut s'amuser de loin

Regardez des vidéos YouTube sur le terminal Linux

Pourquoi j'aime toujours Alpine pour le courrier électronique sur le terminal Linux

Où se trouve le fichier d'en-tête <conio.h> sous Linux ? Pourquoi ne puis-je pas trouver <conio.h> ?

Pourquoi ne puis-je pas `tail -f /proc/$pid/fd/1` ?