gekleurde tekst afdrukken met echo

Ik weet dat voor het afdrukken van gekleurde tekst met echo, bijvoorbeeld rode kleur, de code is: echo -e "\e[1;31m This is red text \e[0m"
en ik weet dat in dit voorbeeld 31 code van rode kleur is en het aantal andere kleuren is:

Black 0;30 Dark Gray 1;30 Blue 0;34 Light Blue 1;34 Green 0;32 Light Green 1;32 Cyan 0;36 Light Cyan 1;36 Red 0;31 Light Red 1;31 Purple 0;35 Light Purple 1;35 Brown 0;33 Yellow 1;33 Light Gray 0;37 White 1;37 

en voor achtergrondkleuren is het aantal 40 tot 47

mijn vraag is deze: wat doet \e en [ en m (na 31) precies hier betekenen?
Ik las in de man-pagina dat \ e escape is, maar ik begreep niet wat het betekent.

Opmerkingen

  • In algemeen, ontsnap je aan tekens die een speciale betekenis hebben in de huidige technische context. Tekenreeksen worden bijvoorbeeld vaak tussen aanhalingstekens geschreven, " zoals deze ". Maar als u aanhalingstekens binnen een string wilt, moet u deze tekens escapen, zodat ze letterlijk worden geïnterpreteerd en niet als scheidingstekens. Bijvoorbeeld echo "She said \"Hi\"" Wat betreft dit geval (uw vraag ), moet je ' wachten op een beter antwoord.
  • hermannn.com/programs/terminal_fonts

Antwoord

Ze maken deel uit van de “Sequence-elementen” van ANSI-ontsnappingsreeksen ook bekend als ECMA-48 CSI-reeksen die oorspronkelijk in 1976 werden gebruikt

Meer specifiek de

is de “ Introducer van de besturingssequentie

Type man console_codes in bijna elke * nix-distro om de codes en sommige documenten te zien.

Reacties

  • man 4 console_code niet man console_code: in mijn ubuntu
  • De naam van de man-pagina eindigt met een " s " dus " man console_codes " zou de juiste pagina moeten oproepen.

Answer

Om precies te zijn worden kleurcodes als volgt gedefinieerd:

Opening RED= "\033[31m" or "\e[1;31m" CYAN="\033[36m" or "\e[1;31m" Closing = "\033[m" or "\e[0m" 

Dus eigenlijk is het gewoon de manier waarop verschillende terminals kleurcodes interpreteren en je ondertitelt je tekst binnen deze elementen. Het is een vreemde manier om de terminal te laten begrijpen wat je bedoelt (zoals HexCodes of Binary ..)

Answer

Ik vond een leuke uitleg hier (althans, fijn voor mij : -) ). Ik “weet niet zeker of het” nuttig voor je zal zijn.

Om te beginnen, typ je dit op je console:

echo "^[[0;31;40mIn Color"

Het eerste teken is een escape-teken, dat eruitziet als twee tekens, ^ en [. Om dit te kunnen afdrukken, moet u op CTRL + V en vervolgens op de ESC-toets drukken. Alle andere tekens zijn normale afdrukbare tekens, dus u ziet de tekenreeks In kleur in het rood. Het type blijft die kleur totdat je terugdroomt door dit te typen:

Het zijn ontsnappingscodes om de kleurmodi in de terminal in te stellen. Is dat gewoon wanneer ze worden afgedrukt met gewone tekens, ze er zo uitzien.

Antwoord

\e is een afkorting voor het Escape-teken. de <ESC>[ en de m zijn de markeringen voor het begin en einde van ANSI-kleurcontrolesequenties, die een subset zijn van ANSI-terminalcontrolesequentie . De meeste beginnen met <ESC>[, gevolgd door een cijfer, gevolgd door een letter die aangeeft welke functie wordt geïmplementeerd (bijv. Verplaats cursor naar regel; wis naar einde regel, zet cursor terug naar opgeslagen locatie, et cetera).

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *