Коли доцільно використовувати колір у програмі командного рядка?


14

В даний час у мене є додаток командного рядка в C називається btcwatch. У нього є -Cваріант, який він може отримати в якості аргументу, який порівнює поточну ціну Bitcoin з ціною, яку попередньо зберігали -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, Makefiles тощо), я не впевнений, чи не виглядав би колір у цій ситуації.


git має колір у своєму виході? Невже я ще не перебіг конкретних команд, які це роблять?
Ізката

Чудові відповіді нижче. Але завжди пам’ятайте про забарвлення, що нетривіальна частина ваших користувачів не зможе розрізнити різницю між червоним і зеленим.
Росс Паттерсон

Izkata: git diff, git pullі т.д.
Marco Scannadinari


@marcoms У мене немає кольорового виводу. Я не робив жодних спеціальних конфігурацій, які б це дозволили.
Ізката

Відповіді:


21

Відповідна річ - зробити забарвлення необов’язковим, за замовчуванням "вимкнути" та керувати ним за допомогою прапора командного рядка. Таким чином, люди, яким це не подобається чи термінал яких не підтримує, не впливають, люди, яким це подобається, можуть ним користуватися, а люди, які дуже, дуже люблять його, можуть визначити псевдонім або ярлик, щоб заздалегідь визначити варіант. Усі щасливі.


5
Це функціональність ls( ls --colorпотрібна опція для його включення).

@MichaelT: Дійсно? Я думаю, це залежить від використовуваного вами розподілу. Вихід (майже) завжди має колір, і я ніколи не вказую --color.
FrustratedWithFormsDesigner

1
@FrustratedWithFormsDesigner BSD смак. /bin/lsє звичайним, /bin/ls -Gкольоровим (хоча якщо у середовищі визначено CLICOLOR, ця опція діє як за замовчуванням). У розподілі , що впливає на gnu , можна побачити --colorі пов'язані з ним змінні середовища.

1
Відмінна відповідь на тему: "Колір повинен бути обов'язковим чи ні", тим більше для "коли це доречно" :)
Michael Durrant

3
@FrustratedWithFormsDesigner Наприклад, на ubuntu alias ls='ls --color=auto'приходить за замовчуванням .bashrc(або якщо він більше не працює, він робив десь близько 8.04 дають чи знадобиться рік, і я щойно переніс свій .bashrc через установки)
Ізката

9

Я вважаю за доцільне використовувати колір, коли:

  • Є "групи" елементів, а групи кольорів допоможуть візуально згрупувати елементи.

  • Існують набори полів "label: value" і ви хочете виділяти мітки (або значення).

  • Є елементи, які виграють від відображення в червоному / зеленому кольорі, наприклад, зупинка / перехід, хороший / поганий тощо.

  • Більшість інформації є фоновим, але один ключовий елемент повинен виділятися.


5

Ще одним головним фактором, який слід врахувати, є те, що забарвлення, залежно від платформи, може додавати послідовності втечі символів. Для побудов на цих платформах: Якщо поточний / типовий режим призначений для виведення кольорів, прийнято визначати, чи є вихід програми програмним кольором PIPE, а кольором зачистки - якщо це так.

Це робиться для того, щоб послідовності кольорових відхилень не скидали програми, що читають його вихід.


Добре, я вважаю, що реалізація --colour(або --no-colour) варіанту буде більш доброзичливою для таких програм
Marco Scannadinari
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.