Como faço para armazenar texto colorido em uma variável e imprimi-lo com cores mais tarde?

4

Se eu fizer git status --short , git listará arquivos que não são rastreados com dois pontos de interrogação vermelhos na frente:

Estoutentandoarmazenarissoemumavariáveleimprimi-locomcoresmaistarde.Aquiestámeuscriptbash:

#!/bin/bashstatus=$(gitstatus--short)echo-e"$status"

Eu achei que o -e flag faria o bash colorir a saída, mas não está funcionando:

Como posso fazer isso?

Edit: a possível duplicata é perguntar como funcionam os caracteres de escape, especificamente seqüências de controle de cores ANSI. Eu acho que entendo como eles funcionam. Minha pergunta é como preservar aqueles na saída do script.

    
por David Kennedy 12.05.2015 / 04:34

1 resposta

7

A maioria dos programas que produzem cores, por padrão, só a produzem quando a saída é para um terminal, não para um canal ou arquivo. Geralmente, isso é uma coisa boa. Muitas vezes, no entanto, há um switch de substituição. Por exemplo, para ls , pode-se usar --color=always e, como resultado, a cor pode ser salva em variáveis de shell. Por exemplo:

grep também suporta a opção --colors=always .

Para o git, a opção correspondente é sua configuração de color.ui :

git -c color.ui=always status
    
por 12.05.2015 / 04:58