A maneira de ecoar texto em negrito ou colorido em um terminal é usar códigos de escape ANSI . Por exemplo, tente isto:
$ echo -e '3[01;1mthis text will be bold3[00;0m this will not'
this text will be bold this will not
A sequência de escape 3[01;1m
faz com que o texto a seguir seja em negrito e 3[00;0m
desative todos os atributos, para que volte ao normal.
Veja aqui para uma boa lista das várias seqüências de escape.
Infelizmente, lp
não sabe como lidar com isso. Só sabe imprimir arquivos postscript. Portanto, precisamos de uma maneira de transformar os caracteres de escape ANSI em postscript formatado. Fiquei intrigado com essa pergunta, então eu publiquei um dos meus no U & L perguntando sobre formas de interpretar o ANSI Escapa como comandos postscript. O seguinte é da resposta Eu cheguei lá, por favor, suba!
Você precisará das seguintes ferramentas:
-
aha
: Adaptador HTML Ansi, este programa pode traduzir códigos de escape ANSI para HTML.DESCRIPTION aha takes SGR-colored Input and prints W3C conform HTML-Code. aha reads the Input from a file or stdin and writes HTML-Code to stdout.
Instalar:
sudo apt-get install aha
-
wkhtmltopdf
: um conversor de HTML para PDF.Description Converts one or more HTML pages into a PDF document, not using wkhtmltopdf patched qt.
Instalar:
sudo apt-get install wkhtmltopdf
Agora, coloque todos juntos. Vou usar esse comando cuja saída é mostrada na imagem abaixo:
echo -e '3[01;1mbold3[00;0m,not bold, and 3[32;1mgreen'
Então, vamos imprimir:
echo -e '3[01;1mbold3[00;0m,not bold, and 3[32;1mgreen' |
aha | wkhtmltopdf - - | lpr
E é isso, que imprimirá uma linha de texto em negrito e colorida, formatada e agradável.