Wann ist es angebracht, Farbe in einer Befehlszeilenanwendung zu verwenden?

14

Derzeit habe ich eine Kommandozeilenanwendung in C aufgerufenbtcwatch . Es hat eine -COption, die es als Argument erhalten kann, das den aktuellen Preis von Bitcoin mit einem Preis vergleicht, der zuvor mit gespeichert wurde -S. Beispielausgabe mit dieser Option ist:

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

Das Dilemma besteht darin, ob für die Zeichenfolge UPoder die DOWNZeichenfolge Farbe verwendet werden soll (grün bzw. rot). Die meisten mir bekannten Befehlszeilenanwendungen (außer Git) halten sich in ihrer Ausgabe von Farben fern. In meinem Wunsch btcwatchnach suchen und ganz "Standard" sein (Verwendung vongetopt , Makefiles, etc.), bin ich nicht sicher, ob Farbe in dieser Situation fehl am Platz aussehen würde.

Marco Scannadinari
quelle
Git hat Farbe in seiner Ausgabe? Habe ich die entsprechenden Befehle noch nicht gefunden?
Izkata
Großartige Antworten unten. Denken Sie jedoch immer an die Farbgebung, damit ein nicht unbedeutender Teil Ihrer Benutzer den Unterschied zwischen Rot und Grün nicht erkennen kann.
Ross Patterson
Izkata: git diff, git pulletc.
Marco Scannadinari
@marcoms Die haben keine Farbausgabe für mich. Ich habe jedoch keine speziellen Konfigurationen vorgenommen, um dies zu ermöglichen.
Izkata

Antworten:

21

Es ist angebracht, die Färbung optional zu machen und sie standardmäßig über ein Befehlszeilenflag zu "aus" zu steuern. Auf diese Weise sind Leute, die es nicht mögen oder deren Terminal es nicht unterstützt, nicht betroffen, Leute, die es mögen, können es verwenden, und Leute, die es wirklich, wirklich mögen, können einen Alias ​​oder eine Verknüpfung definieren, um die Option vorab zu definieren. Alle sind glücklich.

Kilian Foth
quelle
5
Dies ist die Funktionalität von ls(die ls --colorOption ist erforderlich, um es zu aktivieren).
@MichaelT: Wirklich? Ich denke, es hängt von der Distribution ab, die Sie verwenden. Die Ausgabe hat (fast) immer Farbe und ich gebe nie an --color.
FrustratedWithFormsDesigner
1
@FrustratedWithFormsDesigner BSD-Variante. /bin/lsist /bin/ls -Gnormal , ist farbig (wenn Sie jedoch CLICOLOR in der Umgebung definiert haben, ist diese Option standardmäßig aktiviert). In gnu beeinflussten Distributionen sieht man --colorund die zugehörigen Umgebungsvariablen.
1
Tolle Antwort auf "Sollte Farbe obligatorisch sein oder nicht", weniger für "wann es angebracht ist" :)
Michael Durrant
3
@FrustratedWithFormsDesigner Auf Ubuntu zum Beispiel ist alias ls='ls --color=auto'die Standardeinstellung .bashrc(oder wenn es nicht mehr ist, hat es ungefähr 8.04 ein Jahr gegeben oder gedauert, und ich habe gerade meine .bashrc über Installationen
hinweggetragen
9

Ich würde es für angemessen halten, Farbe zu verwenden, wenn:

  • Es gibt 'Gruppen' von Gegenständen und Farbgruppen helfen dabei, die Gegenstände visuell zu gruppieren.

  • Es gibt eine Reihe von 'label: value'-Feldern, und Sie möchten, dass die Beschriftungen (oder Werte) hervorstechen.

  • Es gibt Elemente, die davon profitieren würden, wenn sie in Rot / Grün angezeigt werden, z. B. Stop / Go, Gut / Schlecht usw.

  • Die meisten Informationen stammen aus dem Hintergrund, aber ein zentraler Punkt sollte herausstechen.

Michael Durrant
quelle
5

Ein weiterer wichtiger Faktor ist, dass durch Färben je nach Plattform Zeichen-Escape-Sequenzen hinzugefügt werden können. Für Builds auf diesen Plattformen ist es üblich, zu erkennen, ob die Programmausgabe eine PIPE- oder eine Stripping-Farbe ist, wenn der aktuelle / Standard-Modus die Ausgabe von Farbe ist.

Dies ist so, dass die Farb-Escape-Sequenzen keine nachgelagerten Programme abwerfen, die ihre Ausgabe lesen.

Preet Kukreti
quelle
Guter Punkt, ich nehme an, dass die Implementierung einer --colour(oder --no-colour) Option für solche Programme freundlicher ist
Marco Scannadinari,