리디렉션 스트림에 이스케이프 시퀀스가 ​​표시되지 않거나 색상 출력이 구현되는 방식이 표시되지 않는 이유는 무엇입니까? [복사]

리디렉션 스트림에 이스케이프 시퀀스가 ​​표시되지 않거나 색상 출력이 구현되는 방식이 표시되지 않는 이유는 무엇입니까? [복사]

터미널에서 실행하면 ls출력 색상이 달라집니다.

ls 콘솔 출력

내가 아는 한, 이 색상 지정은 espace 시퀀스(vt)를 통해 수행됩니다.

하지만 실행 중에는 ls | hexdump -cC문자와 LF만 표시됩니다 . 파일로 리디렉션하면 비슷한 결과가 나타납니다.

LS | hexdump -cC 콘솔 출력

어떻게에 대한?

답변1

GNU는 ls파일이나 파이프로 리디렉션할 때가 아니라 터미널에 쓸 때만 컬러 텍스트에 대한 이스케이프 시퀀스를 출력합니다.

이렇게 하려면 를 사용하십시오 ls --color=always.

GNU ls매뉴얼은 다음과 같이 말합니다:

   Using color to distinguish file types is disabled both by default and
   with --color=never.  With --color=auto, ls emits color codes only when
   standard output is connected to a terminal.  [...]

ls귀하의 명령은 ls --color=auto기본적으로 별칭을 사용하여 작동하는 것처럼 추측됩니다 ls.

관련 정보