コマンドラインアプリケーションで色を使用するのが適切な場合


14

現在、私はCでコマンドラインアプリケーションを呼び出していbtcwatchます。これには、-Cビットコインの現在の価格とで事前に保存された価格を比較する引数として受け取ることができるオプションがあります-S。このオプションの出力例は次のとおりです。

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

ジレンマは、文字列UPまたはDOWN文字列に色を使用するかどうか(それぞれ緑と赤)です。私が知っているほとんどのコマンドラインアプリケーション(gitを除く)は、出力の色から離れています。以下のための私の願望ではbtcwatch(の使用を見て、非常に「標準」であることをgetopt色がこのような状況では場違いに見える場合のMakefile、など)を、私はわかりません。


gitは出力に色がありますか?それを行う特定のコマンドを実行していないだけですか?
イズカタ

以下の素晴らしい回答。ただし、ユーザーの重要な部分では赤と緑の違いを区別できないことに注意してください。
ロスパターソン

イズカタ:git diffgit pullなど
マルコスカンナディナリ


@marcomsこれらは私にはカラー出力がありません。ただし、それを有効にするための特別な構成は行っていません。
イズカタ

回答:


21

適切なことは、色付けをオプションにし、デフォルトで「オフ」にし、コマンドラインフラグで制御することです。そうすれば、それを好まない人や端末がサポートしていない人は影響を受けず、好きな人はそれを使うことができ、本当に本当に好きな人は、オプションを事前定義するエイリアスまたはショートカットを定義できます。みんな幸せです。


5
これはの機能ですlsls --colorオプションを有効にするにはオプションが必要です)。

@MichaelT:本当ですか?使用しているディストリビューションに依存すると思います。出力(ほとんど)は常に色を持ち、私は決して指定しません--color
FrustratedWithFormsDesigner

1
@FrustratedWithFormsDesigner BSDフレーバー。 /bin/lsプレーンで/bin/ls -Gあり、色付きです(ただし、環境でCLICOLORが定義されている場合、そのオプションはデフォルトとして機能します)。ではGNUのディストリビューションに影響を与えた 1を見て、--colorそしてそれに関連する環境変数。

1
「色は必須か否か」に対する大きな答えであり、「適切な場合」についてはそれほど
重要で

3
たとえば、ubuntuの@FrustratedWithFormsDesigner alias ls='ls --color=auto'がデフォルトになります.bashrc(または、それがもうない場合は、約8.04
ギブ

9

次の場合、色を使用することが適切であると考えます。

  • アイテムの「グループ」があり、色グループはアイテムを視覚的にグループ化するのに役立ちます。

  • 'label:value'フィールドのセットがあり、ラベル(または値)を目立たせたい場合。

  • 赤/緑で表示することでメリットが得られるアイテムがあります。たとえば、ストップ/ゴー、良い/悪いなどです。

  • ほとんどの情報はバックグラウンドですが、重要な項目が1つあります。


5

考慮すべきもう1つの主要な要因は、プラットフォームに応じて、色分けが文字エスケープシーケンスを追加できることです。これらのプラットフォームでビルドする場合、現在/デフォルトのモードが出力カラーである場合、プログラム出力がPIPEであるかどうかを検出し、その場合はカラーを除去するのが一般的です。

これは、カラーエスケープシーケンスが出力を読み取るダウンストリームプログラムをスローしないようにするためです。


ポイントの良い、私は実装と仮定--colour(または--no-colour)オプションは、このようなプログラムに、より親しみやすいだろう
マルコScannadinari
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.