파이프된 명령을 통해 색상을 표시하는 방법은 무엇입니까?

파이프된 명령을 통해 색상을 표시하는 방법은 무엇입니까?

내가 사용할 때 :

msgattrib --untranslated pl.po

po 파일에서 번역되지 않은 문자열을 보려면 색상이 지정된 문자열이 있지만 다음을 사용할 때는 그렇지 않습니다.

msgattrib --untranslated pl.po | less

답변1

msgattrib실제 터미널에서 실행하는 경우에만 색상을 표시합니다. unbuffer명령의 일부를 사용하여 실제 터미널에서 실행되고 있다고 expect생각한 다음 옵션을 사용하여 ANSI 이스케이프를 처리할 수 있습니다 .msgattrib-rless

unbuffer msgattrib --untranslated pl.po | less -r

tty의 존재에 따라 색상(ANSI 이스케이프 코드)을 생성하는 모든 명령에서 이 작업을 수행할 수 있습니다.

답변2

Less 매뉴얼 페이지에서:

-R or --RAW-CONTROL-CHARS
          Like -r, but only ANSI "color" escape sequences are output in "raw" form.  Unlike -r, the screen appearance is maintained correctly in most  cases.

이 기능을 항상 활성화하는 가장 쉬운 방법은 LESS스크립트에서 환경 .profile변수를 설정하는 것입니다 .login. 저는 -Rand 를 둘 다 사용합니다 -X(이렇게 하면 덜 종료될 때 화면이 지워지는 것을 방지합니다).

답변3

더 적은 색상을 표시하려면 다음 과 less -R <text-file> 같이 Less를 별칭으로 구성합니다 .alias less='less -R'~/.bashrc

관련 정보