Kapan tepat menggunakan warna dalam aplikasi baris perintah?

14

Saat ini saya memiliki aplikasi command-line di C disebut btcwatch. Ini memiliki -Copsi yang dapat diterima sebagai argumen yang membandingkan harga Bitcoin saat ini dengan harga yang disimpan sebelumnya -S. Contoh output dengan opsi ini adalah:

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

Dilema adalah apakah akan menggunakan warna untuk string UPatau DOWN(masing-masing hijau dan merah). Sebagian besar aplikasi baris perintah yang saya tahu (terlepas dari git) tinggal jauh dari warna dalam output mereka. Dalam keinginan saya untuk btcwatchmelihat dan menjadi cukup "standar" (penggunaan getopt, Makefiles, dll), saya tidak yakin apakah warna akan terlihat tidak pada tempatnya dalam situasi ini.

Marco Scannadinari
sumber
git memiliki warna dalam outputnya? Apakah saya belum menjalankan perintah tertentu yang melakukan itu?
Izkata
Jawaban bagus di bawah ini. Tetapi selalu ingat tentang pewarnaan yang sebagian non-sepele dari pengguna Anda tidak akan dapat membedakan perbedaan antara merah dan hijau.
Ross Patterson
Izkata: git diff,, git pulldll.
Marco Scannadinari
@marcoms Mereka tidak memiliki output warna untuk saya. Saya belum melakukan konfigurasi khusus untuk mengaktifkannya.
Izkata

Jawaban:

21

Hal yang tepat untuk dilakukan adalah menjadikan pewarnaan opsional, default ke "off" dan mengendalikannya melalui flag baris perintah. Dengan begitu, orang yang tidak suka atau yang terminalnya tidak mendukungnya tidak terpengaruh, orang yang suka bisa menggunakannya, dan orang yang benar-benar menyukainya dapat menentukan alias atau pintasan untuk menentukan pilihan. Semua orang senang.

Kilian Foth
sumber
5
Ini adalah fungsi dari ls( ls --coloropsi diperlukan untuk menyalakannya).
@MichaelT: Benarkah? Saya kira itu tergantung pada distribusi yang Anda gunakan. Output (hampir) selalu memiliki warna dan saya tidak pernah menentukan --color.
FrustratedWithFormsDesigner
1
@FrustratedWithFormsDesigner BSD rasa. /bin/lspolos, /bin/ls -Gdiwarnai (meskipun jika Anda memiliki CLICOLOR yang didefinisikan di lingkungan, opsi itu bertindak sebagai default aktif). Dalam distribusi dipengaruhi gnu , orang melihat --colordan variabel lingkungan yang terkait.
1
Jawaban yang bagus untuk "Haruskah warna wajib atau tidak", kurang cocok untuk "kapan tepat" :)
Michael Durrant
3
@FrustratedWithFormsDesigner Di ubuntu, misalnya, alias ls='ls --color=auto'datang dalam keadaan default .bashrc(atau jika tidak lagi, itu terjadi sekitar 8.04 memberi atau membutuhkan waktu satu tahun, dan saya baru saja membawa .bashrc melintasi instalasi)
Izkata
9

Saya akan menganggap itu pantas untuk menggunakan warna ketika:

  • Ada 'grup' item dan grup warna akan membantu mengelompokkan item secara visual.

  • Ada set bidang 'label: nilai' dan Anda ingin label (atau nilai) menonjol.

  • Ada item yang akan mendapat manfaat dari ditampilkan dalam warna merah / hijau, misalnya stop / go, baik / buruk, dll.

  • Sebagian besar informasi adalah latar belakang tetapi satu item utama harus menonjol.

Michael Durrant
sumber
5

Salah satu faktor utama lainnya yang perlu dipertimbangkan adalah bahwa pewarnaan, tergantung pada platform, dapat menambah urutan pelarian karakter. Untuk build pada platform tersebut, Jika mode saat ini / standar adalah untuk mengeluarkan warna, sudah lazim untuk mendeteksi apakah keluaran program adalah PIPE dan warna stripping jika itu yang terjadi.

Ini agar urutan pelarian warna tidak membuang program hilir yang membaca outputnya.

Preet Kukreti
sumber
Poin baiknya, saya kira menerapkan opsi --colour(atau --no-colour) akan lebih ramah untuk program-program seperti itu
Marco Scannadinari