web-dev-qa-db-fra.com

Comment puis-je changer les couleurs de mon xterm à l'aide de séquences d'échappement ANSI?

Je voudrais changer les couleurs (arrière-plan, police, au premier plan) de mon xterm de la ligne de commande. J'ai entendu dire que cela peut être fait avec des séquences d'échappement Ansi.

Si cela est possible:

  • Comment est-il fait?
  • Puis-je utiliser des noms de couleur ou dois-je utiliser leurs codes RVB?
26
Nathan Fellman

Les séquences d'échappement ANSI consistent en une séquence de caractères commençant par le caractère d'échappement, le caractère 27. Le caractère suivant est souvent (mais pas toujours) un support carré ouvert: [

La commande ECHO peut envoyer des caractères d'évacuation si vous spécifiez -e et utilise \e pour échapper.

La norme ANSI définit 8 couleurs, ainsi qu'un mode brillant, donnant un total de 16 positifs. La séquence est:

\e[<number>m

<number> fait partie de:

Premier plan:

  • 30 noir
  • 31 rouge
  • 32 vert
  • 33 jaune
  • 34 bleu
  • 35 magenta
  • 36 cyan
  • 37 blanc

Contexte:

  • 40 noir
  • 41 rouge
  • 42 vert
  • 43 jaune
  • 44 bleu
  • 45 magenta
  • 46 cyan
  • 47 blanc

  • 0 réinitialiser tout

  • 1 audacieux

Donc, pour rendre votre rouge au premier plan et votre jaune de fond:

$ echo -e "\e[31m\e[43m"

Et pour activer audacieux:

$ echo -e "\e[1m"

Bien sûr, vous pouvez les combiner tous ensemble:

$ echo -e "\e[31m\e[43m\e[1m"

Il y a beaucoup de nombreux autres codes d'évacuation pour faire d'autres choses.

Par exemple - Effacer l'écran et déplacez le curseur en haut à gauche:

$ echo -e "\e[2J\e[1;1H"

Ce qui est utile lors du changement de couleur:

$ echo -e "\e[31m\e[43m\e[1m\e[2J\e[1;1H"

Qui va changer les couleurs, effacer l'écran et mettre le curseur en haut à gauche. Eh bien, presque le haut à gauche. ECHO met un retour de chariot dans, de sorte qu'il descend une ligne. Vous pouvez ajouter -n Écho pour éviter cela si vous êtes difficile.

Si vous vous déconnectez tout et que vous ne pouvez pas voir ce que vous tapez, vous pouvez réinitialiser les couleurs terminales à la normale en appuyant sur:

Ctrl+v[mReturn

À ce que vous espérez être l'invite de commande. Il va frapper une commande inconnue, mais vous pourrez voir ce que vous faites à nouveau.

29
Majenko

Notez que les XTERMS modernes prennent en charge la couleur 32 bits!

Exemple simple. Pour mettre un beau fond violet foncé (hey, chacun à la sienne) de la valeur # 53186F, vous faites:

echo -ne "\033]11;#53186f\007"

Notez que cela change instantanément la couleur de la fenêtre entière, pas seulement du texte suivant. Ceci est particulièrement agréable pour faire une fenêtre évidemment différente après Ssh'ing à un serveur (par exemple). Mettez ce qui précède 'echo' dans votre fichier .bstrucc et votre terminal modifie automatiquement les couleurs lorsque vous vous connectez à ce serveur (mais ne changera pas lorsque vous êtes Ctrl-D OUT)

Vous pouvez passer des heures sur le net à la recherche de cela - la plupart des documents ne discutent que des couleurs d'origine 16 ANSI.

Sources: http://www.steike.com/code/xterm-colors/ et http://rtfm.etla.org/xterm/ctlseq.html (regardez sous "Contrôles du système d'exploitation")

Remarque: la séquence d'évacuation ci-dessus est valable pour les XTERMS et ne peut pas fonctionner pour d'autres implémentations de "émulateurs de terminaux de fenêtres" de type XTERM "qui peuvent" regarder "comme un xterm. Par exemple, "gnome-terminal" ou "konsole" ont des séquences d'échappement différentes ou ne peuvent pas mettre en œuvre du changement de couleur.

28
Greg

Remarque: le "^ [" est le caractère d'échappement et est inséré avec un Ctrl-V, Ctrl- [et ^ g est un caractère de cloche, inséré avec Ctrl-V, Ctrl-G

Le bloc suivant est dans mon fichier .bash_profile et garantit que mes xterms sur ce système sont toujours blancs sur blanc, même après la connexion à un autre système pouvant avoir changé mes couleurs.

Perl -e '$e=chr(27);print "${e}[37m ${e}[40m ${e}[2J ${e}[1;1H";'
export PS1='^[[37m^[]0;${Host}: ${PWD}^G^[[40m${USER}@${Host}:${PWD}
--> '
2
Mike

vérifiez également un projet scriptechancolor
[.____] Il est complètement fait dans les scripts Bash
Il a des forfaits pour Ubuntu ici
[.____] Mais ces scripts peuvent être installés sur n'importe quelle distribution si vous savez comment (le plus tard peut être téléchargé de son git également).

vous pouvez utiliser des noms de couleur raccourcis ou étendus tels que:

echoc "@rRedFg@{/blue}BlueFg@{/GREEN}GreenBg"

un échantillon: enter image description here

Aussi, veillez à regarder xtermcontrol , pour un contrôle plus étendu sur le xterm sur lui-même (non seulement les caractères).

0
Aquarius Power