ls 또는 tree의 출력을 덜 줄이면 색상이 손실됩니까?


12

treels다른 파일 이름을 착색하여 서로 다른 파일 형식 수 있습니다.

tree그리고 ls종종 출력 I 파이프 그래서 표준 출력의 출력 (디렉토리 포함) 파일의 긴 목록, less.

그러나 less색상을 유지하지 않습니다. 어떻게 색상이나 다른 대안을 보여줄 수 있습니까?

연결된 목록을 보았지만 파이핑이 작동 less -R하거나 less -r작동하지 않습니다. 내 OS는 Ubuntu 12.04입니다. less버전 444 : 09 Jun 2011입니다.


1
@JosephR. 다른 질문은 절반과 관련이 있지만 중복되지는 않습니다. 여기에 우리가 얘기 ls(안 tree)하는 일부 구현이 출력이 터미널로 이동하지 않는 경우 (추가에 힘 컬러 출력에 이야기 할 필요가 less -R필요하고)
스테판 Chazelas가

시도 했습니까 tree -C | less -R? -C옵션은 이하의 트리의 동일합니다 --color=always, 나는 생각한다 (적어도 우분투 12.04에, 나를 위해 작동).
스틸 드라이버

@steeldriver 감사합니다. 효과가있다. tree유무에 관계없이 -C항상 컬러로 출력되지만와 함께 사용할 때 왜 다른가 less?
Tim

1. 2 가지 이유 @ 팀 less이 그에게 부여하지 않는 한 기본적으로 제거하는 색상을 -R가에 둘 말한다 옵션을, 그리고 2 treels같은 (및 기타 프로그램은 일반적으로 그들의 출력을 다른 프로그램에 가고 감지되면 꺼 착색 설정 less) 대신 직접 터미널에, 당신이에 착색을 강제하지 않는 -C--color=always.
jw013

2
이 링크 된 목록은 무엇입니까?
Anthon

답변:


15

'자동'모드에서 색상을 사용하도록 ls --color=auto지시하는 ls을 사용 한다고 가정 합니다. '자동'모드는 lessSTDOUT이 터미널인지 확인하고, 그렇다면 색상을 사용하고 그렇지 않으면 색상을 사용하지 않습니다. 당신 파이프하는 경우 ls로는 less, STDOUT 터미널 아니다, 그것은의 STDIN에 연결되어 less정상적인 파이프입니다.

이 솔루션, 사용 ls --color또는 ls --color=always.

그러나 이제는 또 다른 잠재적 인 문제가 발생합니다. 에 따라 less색상이 표시되지 않지만 대신 이스케이프 코드가 표시 될 수 있습니다. 해결책은 less -R입니다. 이것은 lessANSI 색상 이스케이프를위한 이스케이프 코드를 통과하도록 지시 합니다. -r줄 길이를 올바르게 계산하지 않는 줄이 길어지면 줄 바꿈 문제가 발생할 수 있으므로 사용하고 싶지 않습니다.

따라서 전체 솔루션 :

ls --color | less -R

비슷하게 tree:

tree -C | less -R
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.