Quando è appropriato usare il colore in un'applicazione da riga di comando?


14

Attualmente ho un'applicazione da riga di comando in C chiamata btcwatch. Ha -Cun'opzione che può ricevere come argomento che confronta il prezzo corrente di Bitcoin con un prezzo che è stato precedentemente memorizzato -S. L'output di esempio con questa opzione è:

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

Il dilemma è se usare il colore per la stringa UPo DOWN(rispettivamente verde e rosso). La maggior parte delle applicazioni da riga di comando che conosco (a parte git) rimangono lontane dal colore nel loro output. Nel mio desiderio btcwatchdi apparire ed essere abbastanza "standard" (uso di getopt, Makefile, ecc.), Non sono sicuro che il colore apparirebbe fuori posto in questa situazione.


git ha colore nel suo output? Non ho ancora incontrato i comandi particolari che lo fanno?
Izkata,

Grandi risposte di seguito. Ma ricorda sempre di colorare che una parte non banale dei tuoi utenti non sarà in grado di distinguere la differenza tra rosso e verde.
Ross Patterson,

Izkata: git diff, git pull, ecc
Marco Scannadinari


@marcoms Quelli non hanno l'output a colori per me. Non ho fatto configurazioni speciali per abilitarlo, però.
Izkata,

Risposte:


21

La cosa appropriata da fare è rendere facoltativo il colore, disattivato per impostazione predefinita e controllarlo tramite un flag della riga di comando. In questo modo, le persone a cui non piace o il cui terminale non lo supporta non sono interessate, le persone a cui piace possono usarlo e le persone a cui piace davvero possono definire un alias o un collegamento per predefinire l'opzione. Tutti sono felici.


5
Questa è la funzionalità di ls(l' ls --coloropzione è richiesta per attivarla).

@MichaelT: Davvero? Immagino che dipenda dalla distribuzione che usi. L'output (quasi) ha sempre colore e non ho mai specificato --color.
FrustratedWithFormsDesigner

1
@FrustratedWithFormsDesigner BSD flavour. /bin/lsè semplice, /bin/ls -Gè colorato (sebbene se CLICOLOR è definito nell'ambiente, quell'opzione agisce come impostazione predefinita). Nelle distribuzioni influenzate dallo gnu , si vedono --colore le variabili d'ambiente associate.

1
Ottima risposta a "Il colore dovrebbe essere obbligatorio o no", tanto meno per "quando è appropriato" :)
Michael Durrant,

3
@FrustratedWithFormsDesigner Su Ubuntu, ad esempio, alias ls='ls --color=auto'arriva il valore predefinito .bashrc(o se non lo fa più, da qualche parte intorno all'8.04 ha dato o preso un anno e ho appena portato il mio .bashrc attraverso le installazioni)
Izkata

9

Considero appropriato usare il colore quando:

  • Esistono "gruppi" di articoli e gruppi di colori aiuteranno a raggruppare visivamente gli oggetti.

  • Ci sono set di campi 'label: value' e vuoi che le etichette (o valori) si distinguano.

  • Ci sono elementi che potrebbero trarre vantaggio dalla visualizzazione in rosso / verde, ad esempio stop / go, buono / cattivo, ecc.

  • La maggior parte delle informazioni sono in background, ma un elemento chiave dovrebbe risaltare.


5

Un altro fattore importante da considerare è che la colorazione, a seconda della piattaforma, può aggiungere sequenze di escape del personaggio. Per le build su tali piattaforme, se la modalità corrente / predefinita prevede l'output del colore, è consuetudine rilevare se l'output del programma è un TUBO e il colore di stripping in questo caso.

Questo in modo che le sequenze di escape del colore non eliminino i programmi a valle che leggono il suo output.


buon punto, suppongo che l'implementazione di un'opzione --colour(o --no-colour) sarà più amichevole per tali programmi
Marco Scannadinari,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.