Это, безусловно, можно сделать в Lua; трюк заключается в том, чтобы получить правильную последовательность выхода. Вы можете использовать string.char
для записи определенного значения ASCII:
$ echo -e '\E[37;44m'"\033[1mHello\033[0m" # white on blue
Hello
$ echo -e '\E[37;44m'"\033[1mHello\033[0m" | xxd # check out hex dump of codes
0000000: 1b5b 3337 3b34 346d 1b5b 316d 4865 6c6c .[37;44m.[1mHell
0000010: 6f1b 5b30 6d0a o.[0m.
$ lua -e "for _,i in ipairs{0x1b,0x5b,0x33,0x37,0x3b,0x34,0x34,0x6d,\
0x1b,0x5b,0x31,0x48,0x65,0x6c,0x6c,0x6f,0x1b,0x5b,0x30,0x6d,0x0a} \
do io.write(string.char(i)) end" # prints out "Hello" in white on blue again
Hello