답변:
컬러 출력을 생성하는 많은 프로그램은 TTY에 쓰고 있는지 감지하고 그렇지 않으면 컬러를 끕니다. 텍스트 만 캡처 할 때 색상 코드가 성가 시므로 "올바른 일"을 자동으로 시도합니다.
이와 같은 프로그램에서 색상 출력을 캡처하는 가장 간단한 방법은 TTY에 연결되어 있지 않아도 색상을 쓰도록 지시하는 것입니다. 해당 옵션이 있는지 확인하려면 프로그램 설명서를 읽어야합니다. (예를 들어, grep
이 --color=always
옵션을 선택합니다.)
expect
스크립트 unbuffer
를 사용하여 다음과 같이 의사 -tty를 만들 수도 있습니다 .
echo barney | unbuffer grep barney | sed -n 1,$\ p
unbuffer
정보 덕분 에 쉘의 출력과 같은 IRC 봇의 출력에 도움이됩니다.
그것은 나를 위해 작동합니다;-! (현재 MingW 환경에서)
echo barney | grep --color=always barney | sed -n '1,$p'
**barney**
# 바니 빨간색 텍스트로 표시
$ grep --version
GNU grep 2.5.4
$ sed --version
GNU sed version 4.2.1
tree
is colorized a-la dircolors if the LS_COLORS environment variable is set and output is to tty
... Maybe (?) 파이프가 TTY로 출력되고 있다고 생각하도록 속이는 방법이 있습니다. .
man tree
... 비슷한 옵션이 있습니다 -C
. 아마도 컬러 이스케이프 코드를 출력하는 프로그램의 일반적인 기능
less
채색 된 텍스트 입력 (nice :)을 받아 들일 수 있음을 발견했습니다 . 예 :tree -C ~/ |less -R
또는ls -lR --color=always . |less -R