Existe-t-il une page de manuel pour la sortie du shell coloré?

23

Vous savez, cette sortie colorisée faite par des séquences de caractères spéciales, par exemple:

echo -e "\e[34m Hello\n \e[0m"

Cela produira le mot "Bonjour" coloré en bleu. Pour ce faire, j'ai dû chercher sur le Web, et c'est difficile, car différentes sources peuvent dire quelque chose de différent. J'ai pensé qu'il devait y avoir des manuels, mais je n'ai pas pu les trouver. Même avec apropos colorou quelque chose de similaire. Donc, la question est - où puis-je trouver des manuels fiables?

Sergius
la source
2
Vous recherchez de la documentation sur les codes d'échappement ANSI. (J'ai tendance à utiliser la page Wikipedia lorsque j'en ai besoin.)
Chepner
Notez que vous n'avez pas nécessairement besoin de connaître ces séquences d'échappement. Plusieurs shells (tcsh, zsh, fish au moins) ont un support intégré pour sortir en couleurs sans avoir à écrire explicitement ces séquences.
Stéphane Chazelas

Réponses:

27

Il y a trop de sources d'information pour les énumérer sur cette page:

  • La commande echo -eutilise une extension pour être rendue \een ASCII 27 (octal 33 ou "\ 033"). La façon portable d'imprimer ces utilisations printf(POSIX). Comparer avec le standard echo(POSIX).
  • Votre exemple peut être réécrit en

    printf "\033[34m Hello\n \033[0m"

  • la norme pour les échappements de couleur est ECMA-48 (Fonctions de contrôle pour les jeux de caractères codés).
  • Dans ECMA-48, 8.3.117 SGR - SELECT GRAPHIC RENDITION répertorie les séquences de contrôle pour définir 8 couleurs de premier plan et 8 couleurs d'arrière-plan.
  • Il répertorie également les codes 39/49 "couleur d'affichage par défaut (définie par l'implémentation)" et 38/48 "réservés pour une future normalisation; destinés à définir la couleur de premier plan des caractères comme spécifié dans l'ISO 8613-6 [Recommandation T.416 du CCITT]". Autrement dit, il y a une recommandation d'une autre organisation mais elle n'a pas (jusqu'à présent, après 24 ans) fait partie de la norme.
  • en le lisant attentivement, vous remarquerez peut-être que la norme est vague à de nombreux endroits, permettant différentes interprétations. Il décrit la syntaxe de ces séquences de contrôle mais ne décrit pas leur comportement . Pour cela, vous devez vous rendre dans la documentation des terminaux respectifs.
  • la documentation pour xterm se trouve dans XTerm Control Sequences , qui suppose une familiarité avec la documentation DEC disponible sur http://vt100.net
  • pour les autres terminaux, leurs pages de manuel peuvent énumérer les contrôles (comme pour la console Linux dans console_codes ).
  • d'autres terminaux se documentent comme "xterm"; pour discussion, voir la FAQ xterm Comparaison des versions, en comptant les contrôles . Heureusement, les contrôles de couleur sont pour la plupart compatibles (mais voir la FAQ ncurses Mon terminal affiche des espaces non colorés ).
  • vous pouvez également lire les pages de manuel de tput, qui vous permettent d'utiliser les terminfofonctionnalités d'un script shell. Votre exemple pourrait être réécrit en

    printf '%s\n' "$(tput setaf 4)Hello$(tput setaf 0)"
    
  • quelques sources telles que le Bash Prompt HOWTO et le Advanced Bash-Scripting Guide mentionnent la couleur, mais (même celles-ci) ont généralement des lacunes et des omissions et ne sont pas utiles en ce qui concerne ECMA-48.

  • la plupart des autres sources que vous trouverez avec une copie de recherche sur le Web provenant d'autres sources (telles que celles citées), etc., et en règle générale, accordez peu d'attention à la norme actuelle.
Thomas Dickey
la source
La section pertinente de l'ECMA-48 semble être 8.3.117 - "SGR - SELECT GRAPHIC RENDITION". Il a les seules mentions du mot "bleu", et les codes qui s'y trouvent fonctionnent au moins dans mon XTerm.
l0b0
oui - je vais ajouter une précision.
Thomas Dickey
2
C'est vraiment une excellente réponse - souhaite que toutes les réponses soient comme les vôtres
Sergius
1
xterm prend également en charge le mode 256 couleurs, ce qui est vraisemblablement documenté dans l'un des manuels ci-dessus.
sendmoreinfo
Voir wynnnetherland.com/journal/… pour un tas d'informations utiles, y compris le paquet grc qui peut faire toutes sortes de choses de colorisation avec la sortie de commande.
Joe