2010-06-24 8 views
1

나는 몇 가지 질문이 있습니다 :명령 줄 유틸리티 : 올바르게 만드는 방법은 무엇입니까?

  1. 클라이언트에 표시 할 수있는 오류가있는 경우 - 대신 STDOUT의 STDERR 스트림을 사용하는 좋은 일이가? 아니면 사소한 문제입니까?

  2. 이 유틸리티의 출력 메시지에 색상 지원을 추가하고 싶습니다. 환경에 대한 내재적 인 프레임 워크를 사용해야합니까? (256 색 모드와 "순수"모드 일 수 있습니다). 아니면 관대하게 만드는 방법?

  3. 클라이언트가 출력을 로그 파일로 리디렉션 할 수 있으므로 출력에 색상을 추가하는 것이 좋습니다. 그것 때문에 잠재적으로 어떤 것도 "깨뜨릴"수 있습니까?

UNIX-way(Do one thing and do it well)에이 유틸리티를 구축하는 데 도움을주십시오.

답변

5

몇 가지 이유로 STDERR이 STDOUT보다 오류에 더 좋습니다. 출력을 리디렉션해도 오류가 숨겨지는 것은 아닙니다. 경고가 출력과 섞이지 않게하여 어떤 경우에는 구문 분석/처리를 더 쉽게 할 수 있습니다.

ANSI 색상 세트를 지원해야하는 curses 라이브러리를 살펴볼 수 있습니다.

ls과 같은 유틸리티는 출력물이 리디렉션되고 있는지 여부를 감지하고 로그 파일 등이 깔끔하게 보이지 않도록 색상 코드를 삭제합니다. 당신도 똑같이해야합니다.

3

STDERR을 사용하십시오. 색상에 관해서는 출력물이 색상을 인쇄하기 전에 tty인지 확인하여 걱정할 필요가 없습니다. 초기화하는 동안 즉석에서 색상을 활성화 또는 비활성화하는 검사를하십시오. 또한 사용자가 명시 적으로 하나를 선택하기 위해 전달할 수있는 --color=[on|off|auto] 플래그를 갖는 것이 좋습니다.

관련 문제