logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 22-08-2015 11:45:37

sogal
Black Metal Modo
Lieu : Nord Isère
Distrib. : openSUSE Leap 42.3
Noyau : Linux 4.4.76
(G)UI : GNOME
Inscription : 09-05-2013
Site Web

[wiki] astuces diverses pour le terminal

Bonjour à tous,

Suite à cette discussion https://debian-facile.org/viewtopic.php … 34#p134434
j'ai créé un page du wiki destinée aux améliorations diverses qu'on peut apporter au shell et/ou au terminal (émulateur de terminal).

Ça peut intéresser ceux qui y passe beaucoup de temps :

Astuces pour le terminal

Enjoy wink

1485418338.png Hello IT ! Have you tried turning it off and on again ?

Hors ligne

#2 22-08-2015 12:00:22

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : [wiki] astuces diverses pour le terminal

Ah oui, c'est chouette de regrouper tout ça. Merci !  smile

I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

#3 27-05-2024 16:30:24

agp91
Membre
Distrib. : GNU Debian stable
(G)UI : xfce
Inscription : 12-02-2023

Re : [wiki] astuces diverses pour le terminal

Voulant citer cette page de wiki dans le wiki Terminaux et consoles explications à la section Le type TERM qui décrit les capacités des terminaux (console virtuelle ou terminal fenêtre).

J'ai testé la section Avoir de la couleur dans les manpages avec less et j'y ai trouvé des erreurs.

Dans Couleurs simples, il nous est promis :

Ce qui permet d'utiliser LESS avec les en-têtes de catégories et texte en gras en vert, les éléments soulignés en jaune et les résultats de recherche en rouge gras.


Or j'obtiens

  • Dans un terminal fenêtre : une  écriture verte grasse et clignotante (pas très pratique à la lecture, cela capture l'attention et perturbe la concentration sur le contenu)

  • Dans une console virtuelle : une écriture verte non grasse sur fond gris (c'est mieux, mais ce n'est pas ce qui est promis).


Cela provient de la séquence d'échappement déclarée dans la variable  LESS_TERMCAP_md (qui indique comment formater, ce que la page de manuel, doit mettre en gras) :

LESS_TERMCAP_md=$'\E[01;32;5;74m'


Or la couleur 74 ne peut être appliquée que si le code 38 est prononcée avant (le code 38 est prévu pour dépasser les 8 couleurs, allant de 30 à 37 pour l'écriture et de 40 à 47 pour le fond). Le code couleur 74 n'est donc pas compris. Et donc, il reste les codes 1 (gras), 32 (vert) et 5 (clignotant). Voila pour le terminal fenêtre (qui gère les 256 couleurs).
scratchhead.gif De plus la couleur 74 n'est pas verte.
Sous la console virtuelle qui ne dispose que de 8 couleurs, le code 74 est caduc, le terminal Linux fait ce qu'il peut pour retourner un rendu.
Cela met en avant  que dans un terminal, il ne faut pas utiliser la palette des 256 couleurs, si l'on veut obtenir le même rendu, dans console (virtuelle), que dans un terminal fenêtre.
La correction est donc :

LESS_TERMCAP_md=$'\E[1;32m'

Et voila, ça rox biggreen.gif

Dans Couleur à la most il nous est promis, les même couleurs que si l'on utilisait le pager most (non installer par défaut), en utilisant terminfo.
Le tuto réalisé, dans une console ou dans un terminal (fenêtre), un message d'erreur est retourné, lorsque la la commande man est utilisée:

$ man bash
WARNING: terminal is not fully functional
Press RETURN to continue
 


Une fois la touche Entrée pressée :

  • Dans un terminal fenêtre : Aucune couleur n'est obtenue, les touches de déplacement flèches droite et gauche, pageUp, PageDown, Fin et Début ne sont pas disponibles. Le déplacement se réalise uniquement avec les touches Espace et Entrée.

  • Dans une console virtuelle : Idem, mais en plus ni la touche Entrée, ni la touche Espace, ne permet le déplacement.


... C'est normal, les fichiers des capacités des terminaux, terminfo, sont des fichiers binaires et doivent être compilés avec la commande tic.

$ ls ~/.terminfo
mostlike
$ tic ~/.terminfo/mostlike
$ ls ~/.terminfo
m mostlike
$ ls ~/.terminfo/m
mostlike
$ file ~/.terminfo/m/mostlike
.terminfo/m/mostlike: Compiled terminfo entry "mostlike"


Voila maintenant cela fonctionne correctement dans un terminal fenêtre.
Aussi que dans une console virtuelle, mais avec un petit défaut : Lorsque nous quittons la page de manuel, tout l'écran est vidé, seule est affichée l'invite sad

old_geek.gifIl est beaucoup mieux d'utiliser terminfo que termcap qui chez GNU/Debian est obsolète. Mais en l'état, il est mieux ici, de se tourner vers la solution termcap (corrigée)

Alors, je me suis tourné vers la page de wiki Des pages de Man, en couleur !
Un doublon ?
... Pas tout à fait : Y est proposé deux méthodes pour coloriser les pages de manuel :

  • Une solution utilisant le pager most (qui doit être installé)

  • Et une autre, utilisant comme ici, les termcap. Mais le code 38 est bien présent, ce qui permet de comprendre la couleur 74. Toutes fois, utilisant une palette de 256 couleurs, le rendu n'est pas le même dans un terminal fenêtre que dans une console (virtuelle).

Dernière modification par agp91 (27-05-2024 17:31:26)


La liberté est gratuite et accessible à tous. Sinon ça n'en est pas.

En ligne

#4 27-05-2024 18:13:44

agp91
Membre
Distrib. : GNU Debian stable
(G)UI : xfce
Inscription : 12-02-2023

Re : [wiki] astuces diverses pour le terminal

Voila j'ai corrigé, sauf le code source du fichier ~/.terminfo/mostlike, qui en l'état efface l'écran d'une console virtuelle lorsque l'on quitte man.

La liberté est gratuite et accessible à tous. Sinon ça n'en est pas.

En ligne

#5 28-05-2024 08:05:15

agp91
Membre
Distrib. : GNU Debian stable
(G)UI : xfce
Inscription : 12-02-2023

Re : [wiki] astuces diverses pour le terminal

... Depuis, j'ai comme un goût étrange :
Celui de faire compiler n'importe quoi (un truc obscure, non compris coyotus.png)

scratchhead.gif Cela me posait un problème morale de sécurité.
L'effacement de l'écran sous console était un autre point de fâcherie.
Alors j'ai cherché à en savoir un peu plus.
Et sur le net j'ai trouver ceci (en) Colors in man pages (stackexchange.com)

Puis j'ai cherché l'origine des sources, ce ne fut pas difficile,  cool... C'est marqué dessus

Reconstructed via infocmp from file: /usr/share/terminfo/x/xterm-pcolor


Le  code a été obtenu par le retour de la commande infocmp, qui permet de "traduire" un fichier (binaire) de capacité terminfo.

$ terminfo xterm-pcolor
# Reconstructed via infocmp from file: /usr/share/terminfo/x/xterm-pcolor
xterm-pcolor|xterm with color used for highlights and status line,
  am, hs, km, mir, msgr, xenl,
  cols#80, it#8, lines#24, wsl#40,
  acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
  bel=^G, bold=\E[1;43m, clear=\E[H\E[2J, cr=\r,
  csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
  cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
  cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
  dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
  dsl=\E]0;\007, ed=\E[J, el=\E[K, enacs=\E)0, fsl=^G,
  home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=\n,
  is2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8, kbs=^?,
  kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
  kdch1=\E[3~, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~,
  kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
  kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
  kf2=\E[12~, kf20=\E[34~, kf3=\E[13~, kf4=\E[14~,
  kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
  kfnd=\E[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
  kslt=\E[4~, meml=\El, memu=\Em, rc=\E8, rev=\E[7;34m, ri=\EM,
  rmacs=^O, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l,
  rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
  rs2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8, sc=\E7,
  sgr=%?%p9%t\016%e\017%;\E[0%?%p6%t;1;43%;%?%p2%t;4;42%;%?%p1%t;7;31%;%?%p3%t;7;34%;m,
  sgr0=\E[m, smacs=^N, smcup=\E7\E[?47h, smir=\E[4h,
  smkx=\E[?1h\E=, smso=\E[7;31m, smul=\E[4;42m, tbc=\E[3g,
  tsl=\E]0;, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c,



La commande a retourné, dans un langage un peu plus compréhensible, lol, le contenu du fichier de capacité pour le type de terminal xterm-pcolor
Le code est pratiquement identique à celui donné dans le wiki (probablement du à l'évolution... Presque 9 ans)
... Bien que le code reste (peut-être) obscure, son origine est de confiance.

Les types xterm étant spécifique au terminaux fenêtre, cela peut expliquer le soucis en console.

Dernière modification par agp91 (28-05-2024 14:01:51)


La liberté est gratuite et accessible à tous. Sinon ça n'en est pas.

En ligne

#6 28-05-2024 14:01:18

agp91
Membre
Distrib. : GNU Debian stable
(G)UI : xfce
Inscription : 12-02-2023

Re : [wiki] astuces diverses pour le terminal

agp91 a écrit :


Mais puisque le type (xterm-pcolor) existe déjà, il est inutile de le recompiler sous un autre nom.
Il suffit juste d'indiquer à less (le pager par défaut de la commande man) d'utiliser ce type via la variable TERM

TERM=xterm-pcolor man infocmp



Ainsi l'alias devient simplement

alias man="TERM=xterm-pcolor man"

Mais il n'ai pas recommander si l'on a un usage de la console pour lire des pages de manuel.


old_geek.gif C'est faux, si tu regardes bien, il y a des différences :

$ infocmp -d mostlike xterm-pcolor
comparing mostlike to xterm-pcolor.
    comparing booleans.
    comparing numbers.
    comparing strings.
  bold: '\E[1m\E[31m', '\E[1;43m'.
  is2: '\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>', '\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8'.
  kbs: '^H', '^?'.
  rev: '\E[7m\E[34m', '\E[7;34m'.
  rs2: '\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>', '\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8'.
  sgr: NULL, '%?%p9%t\016%e\017%;\E[0%?%p6%t;1;43%;%?%p2%t;4;42%;%?%p1%t;7;31%;%?%p3%t;7;34%;m'.
  smso: '\E[1;30m\E[47m', '\E[7;31m'.
  smul: '\E[32m', '\E[4;42m'.
 



roll Notamment bold, smso et smul qui change les couleurs pour proposer celle de most...

Dernière modification par agp91 (28-05-2024 14:03:09)


La liberté est gratuite et accessible à tous. Sinon ça n'en est pas.

En ligne

#7 29-05-2024 09:26:11

agp91
Membre
Distrib. : GNU Debian stable
(G)UI : xfce
Inscription : 12-02-2023

Re : [wiki] astuces diverses pour le terminal

cd .terminfo
cp mostlike mostline.00
 



Le soucis pour être utilisé en console, ce sont les séquences d’échappement 2J utilisées.
Les séquences J effacent l'écran :

Page manuel console_codes a écrit :

J   ED        Erase display (default: from cursor to end of display).
          ESC [ 1 J: erase from start to cursor.
          ESC [ 2 J: erase whole display.
          ESC [ 3 J: erase whole display including scroll-back buffer (since  Linux 3.0).



$ grep 2J mostlike
  bel=^G, bold=\E[1m\E[31m, clear=\E[H\E[2J, cr=^M,
  rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E[?1l\E>,
 


Effectivement les paramètres clear et rmcup contiennent la séquence d’échappement 2J (effacer tout l’affichage).
idea.gif Les remplacer par un simple J (effacer l'affichage du curseur à la fin), permet de résoudre le problème en console. Et ne modifie par le comportement dans un terminal fenêtre.

sed -i 's/2J/J/' mostilke
tic  mostilke
 


Maintenat, que cela soit, dans un terminal fenêtre, ou dans une console (virtuelle), TERM=mostlike man ... fonctionne comme il se doit.

TERM=mostlike man console_codes



Mais,
Adapter un type xterm pour fonctionner en console, reste du bricolage.
Il serait mieux, d'adapter un type linux (retourné par la commande infocmp linux) aux couleurs most.
Et obtenir deux types : xterm-mostlike et linux-mostlike

Dernière modification par agp91 (29-05-2024 11:28:30)


La liberté est gratuite et accessible à tous. Sinon ça n'en est pas.

En ligne

#8 29-05-2024 10:41:17

agp91
Membre
Distrib. : GNU Debian stable
(G)UI : xfce
Inscription : 12-02-2023

Re : [wiki] astuces diverses pour le terminal

Correction dans la page wiki :

  • Le fichier source mostlike est renommé en fichier mostlike.src

  • Les séquences 2J y ont été changées en J

  • Ajout d'une note explicatif sur l'origine de code et les modifications apportées.

Dernière modification par agp91 (29-05-2024 13:48:43)


La liberté est gratuite et accessible à tous. Sinon ça n'en est pas.

En ligne

Pied de page des forums