Quando é apropriado usar cores em um aplicativo de linha de comando?


14

Atualmente, tenho um aplicativo de linha de comando em C chamado btcwatch. Tem uma -Copção que pode receber como argumento que compara o preço atual do Bitcoin com um preço que foi previamente armazenado -S. Exemplo de saída com esta opção é:

$ btcwatch -vC  # -v = verbose
buy: UP $ 32.000000 USD (100.000000 -> 132.000000)
sell: UP $ 16.000000 USD (100.000000 -> 116.000000)

O dilema é se deve usar cor para a UPou DOWNstring (verde e vermelho, respectivamente). A maioria dos aplicativos de linha de comando que eu conheço (além do git) fica longe da cor na saída. No meu desejo de btcwatchparecer e ser bastante "padrão" (uso de getoptMakefiles, etc), não tenho certeza se a cor ficaria fora de lugar nessa situação.


git tem cor em sua saída? Ainda não corri os comandos específicos que fazem isso?
Izkata

Ótimas respostas abaixo. Mas lembre-se sempre de colorir que uma parte não trivial de seus usuários não será capaz de distinguir a diferença entre vermelho e verde.
Ross Patterson

Izkata: git diff, git pull, etc.
Marco Scannadinari


@ marcoms Aqueles não têm saída em cores para mim. Eu não fiz configurações especiais para habilitá-lo, no entanto.
achou

Respostas:


21

A coisa apropriada a fazer é tornar a coloração opcional, o padrão é "off" e controlá-la através de um sinalizador da linha de comando. Dessa forma, pessoas que não gostam ou cujo terminal não o suporta não são afetadas, pessoas que gostam dele podem usá-lo e pessoas que realmente gostam podem definir um alias ou atalho para predefinir a opção. Todo mundo está feliz.


5
Essa é a funcionalidade de ls(a ls --coloropção é necessária para ativá-la).

@MichaelT: Sério? Eu acho que depende da distribuição que você usa. A saída (quase) sempre tem cores e eu nunca especifico --color.
FrustratedWithFormsDesigner

1
@FrustratedWithFormsDesigner Sabor BSD. /bin/lsé simples, /bin/ls -Gé colorido (embora, se você tiver o CLICOLOR definido no ambiente, essa opção atue como padrão). Nas distribuições influenciadas pelo gnu , vê-se --colore suas variáveis ​​de ambiente associadas.

1
Grande resposta a "cor deve ser obrigatório ou não", menos para "Quando é apropriado" :)
Michael Durrant

3
@FrustratedWithFormsDesigner No ubuntu, por exemplo, alias ls='ls --color=auto'vem o padrão .bashrc(ou, se não existir mais, ocorreu algo em torno de 8,04 ou mais por ano, e eu acabei de carregar meu .bashrc nas instalações)
Izkata

9

Eu consideraria apropriado usar cores quando:

  • Existem 'grupos' de itens e grupos de cores ajudarão a agrupar visualmente os itens.

  • Existem conjuntos de campos 'label: value' e você deseja que os rótulos (ou valores) se destaquem.

  • Existem itens que poderiam ser exibidos em vermelho / verde, por exemplo, parar / ir, bom / ruim, etc.

  • A maioria das informações é de segundo plano, mas um item importante deve se destacar.


5

Outro fator importante a considerar é que a coloração, dependendo da plataforma, pode adicionar seqüências de escape de caracteres. Para compilações nessas plataformas, se o modo atual / padrão é produzir cores, é habitual detectar se a saída do programa é uma tubulação e, se for o caso, uma cor de tira.

Isso ocorre para que as seqüências de escape de cores não atinjam os programas downstream que lêem sua saída.


bom ponto, acho que a implementação de um --colour(ou --no-colour) opção será mais amigável para tais programas
Marco Scannadinari
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.