( egmont | 2023. 07. 05., sze – 23:00 )

Echo-nál kell majd az "-e" paraméter

... és nem használhatod helyette a sokkal szebb printf parancsot, és el fog hasalni ha az egyéb kiírandó dolog, például ``-közti parancs kimenete véletlenül épp tartalmaz egy '\' után egy speciálisan kezelt betűt.

Ehelyett sokkal elegánsabb és robusztusabb, ha a változó értéke nem a backslash majd 'e' betűvel kezdődik, hanem magával az escape karakterrel.

A $'...' konstrukcióval az értékadáskor történik a "\e" kiértékelése, a shell nyelvének részeként, nem pedig az echo parancs teszi ezt:

Red=$'\e[31m'
echo "${Red}xyz"
printf "%s\n" "${Red}xyz"

Két további tök lényegtelen nitpick:

Sosem értettem a kétjegyű 00, 01 stb. értékek használatát. A használható számok simán 100 fölé is mennek, semmi logika nincs abban hogy 2 számjegyet írjon az ember. 0 és 1 tökéletesen megfelel. Amúgy a 0, ha semmi mást nem akarsz csinálni (mint a Reset változóban) el is hagyható.

Az 1 (avagy hát 01) egyre kevesebb terminálban jelenti a szín élénk változatát (a félkövér betű helyett vagy mellett), és egyre több terminálban jelenti a félkövér betűt a szín változatlanul hagyásával. A változónév ezt akár tükrözhetné is, vagy meggondolandó lehet egy külön Bold változó bevezetése. Az, hogy a Red vastag pirosat jelent, a Cyan pedig vékony világoskéket, ekkora picinyke szkriptben oké, nagyobb léptékű projektben követhetetlen. A név ha az értéket tükrözi, akkor tükrözze precízen. Másik lehetséges megközelítés, hogy a név a funkciót tükrözi, például ErrorColor=$'\e[1;31m' stb.