명령 행 응용 프로그램에서 색상을 사용하는 것이 언제 적절한가요?


14

현재 C 라는 명령 줄 응용 프로그램이btcwatch 있습니다. 여기에는 -CBitcoin의 현재 가격과 사전에 저장된 가격을 비교하는 인수로받을 수 있는 옵션이 있습니다 -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 diff, git pull
Marco Scannadinari


@marcoms 저에게 컬러 출력이 없습니다. 그래도이를 활성화하기 위해 특별한 구성을 수행하지 않았습니다.
이즈 카타

답변:


21

적절한 방법은 채색을 선택적으로하고, 기본적으로 "off"로 설정하고 명령 행 플래그를 통해 채색하는 것입니다. 이런 방식으로, 싫어하거나 터미널을 지원하지 않는 사람들은 영향을받지 않으며, 그것을 사용할 수있는 사람들, 실제로 그것을 좋아하는 사람들은 옵션을 미리 정의하기 위해 별명이나 지름길을 정의 할 수 있습니다. 모두 행복합니다.


5
이것은 기능입니다 ls(설정하려면 ls --color옵션이 필요합니다).

@MichaelT : 정말요? 나는 그것이 당신이 사용하는 분포에 달려 있다고 생각합니다. 출력 (거의)에는 항상 색상이 있으며 결코 지정하지 않습니다 --color.
FrustratedWithFormsDesigner

1
@FrustratedWithFormsDesigner BSD 플레이버. /bin/ls보통이다 /bin/ls -G(당신이 환경에 정의 CLICOLOR이있는 경우, 그 옵션이 기본 역할을하지만) 채색된다. 에서는 GNU이 분포의 영향을 , 하나의보고 --color와 연관된 환경 변수.

1
그레이트 대답 "해야 색상은 필수 여부가 될 '덜 :)"때 적합 "에 대한
마이클 듀런트

3
@FrustratedWithFormsDesigner 예를 들어, 우분투에서는 alias ls='ls --color=auto'기본값으로 제공됩니다 .bashrc(또는 더 이상 그렇지 않은 경우 8.04 주기로 1 년이 걸리거나 1 년이 걸리고 설치에 걸쳐 .bashrc를 가지고
다녀 왔습니다

9

다음과 같은 경우 색상을 사용하는 것이 적절하다고 생각합니다.

  • 항목의 '그룹'이 있으며 색상 그룹은 항목을 시각적으로 그룹화하는 데 도움이됩니다.

  • 'label : value'필드 세트가 있으며 레이블 (또는 값)을 돋보이게하려고합니다.

  • 빨간색 / 녹색으로 표시되어 이익을 얻을 수있는 항목이 있습니다 (예 : 중지 / 이동, 양호 / 나쁨 등).

  • 대부분의 정보는 배경이지만 하나의 주요 항목이 눈에 띄어 야합니다.


5

고려해야 할 또 다른 주요 요소는 플랫폼에 따라 색상이 문자 이스케이프 시퀀스를 추가 할 수 있다는 것입니다. 해당 플랫폼에서 빌드하는 경우 현재 / 기본 모드가 색상을 출력하는 경우 프로그램 출력이 PIPE인지 여부를 감지하는 것이 관례입니다.

이것은 색상 이스케이프 시퀀스가 ​​출력을 읽는 다운 스트림 프로그램을 버리지 않도록하기위한 것입니다.


좋은 점, 나는 --colour(또는 --no-colour) 옵션을 구현하는 것이 그러한 프로그램들에 더 친숙 할 것이라고 생각한다
Marco Scannadinari
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.