`less` 또는`more`로 파일을 읽을 때 어떻게 내용을 컬러로 볼 수 있습니까? 리눅스에서 파일을 읽을

나는 명령을 리눅스에서 파일을 읽을 때 less또는 more, 어떻게 색상의 콘텐츠를받을 수 있나요?



답변

피그먼트의 힘을 덜 자동으로 활용할 수 있습니다! (손으로 배관 할 필요가 없습니다.)

pygments패키지 관리자 또는 pip (이라고도 함 python-pygments) 와 함께 설치 하거나 http://pygments.org/download/로 다운로드하십시오 .

파일 작성 ~/.lessfilter

#!/bin/sh
case "$1" in
    *.awk|*.groff|*.java|*.js|*.m4|*.php|*.pl|*.pm|*.pod|*.sh|\
    *.ad[asb]|*.asm|*.inc|*.[ch]|*.[ch]pp|*.[ch]xx|*.cc|*.hh|\
    *.lsp|*.l|*.pas|*.p|*.xml|*.xps|*.xsl|*.axp|*.ppd|*.pov|\
    *.diff|*.patch|*.py|*.rb|*.sql|*.ebuild|*.eclass)
        pygmentize -f 256 "$1";;

    .bashrc|.bash_aliases|.bash_environment)
        pygmentize -f 256 -l sh "$1";;

    *)
        if grep -q "#\!/bin/bash" "$1" 2> /dev/null; then
            pygmentize -f 256 -l sh "$1"
        else
            exit 1
        fi
esac

exit 0

당신의 .bashrc추가

export LESS='-R'
export LESSOPEN='|~/.lessfilter %s'

또한 다음을 ~/.lessfilter실행하여 실행 파일 을 만들어야 합니다.

chmod u+x ~/.lessfilter

데비안에서 테스트했습니다.

당신은 아이디어를 얻습니다. 이것은 bash가 아닌 다른 인터프리터를 위해 더 많은 확장을 수용하거나 shebang을 파싱하여 더 향상 될 수 있습니다. 이에 대한 다른 답변 중 일부를 참조하십시오.

이 아이디어는 Pygments 제조업체의 오래된 블로그 게시물에서 비롯 되었지만 더 이상 존재하지 않습니다.


답변

다음을 시도하십시오 :

less -R

부터 man less:

-r 또는 --raw-control-chars

“원시”제어 문자가 표시됩니다. (…)

-R 또는 --RAW-CONTROL-CHARS

마찬가지로 -r, “raw”형식으로 ANSI “color”이스케이프 시퀀스 만 출력됩니다. (…)


답변

다른 게시물에서 답을 얻었습니다 : Less and Grep : grep에서 less로 파이프를 사용할 때 색상이 표시됩니다.

당신은 단순히 실행하면 grep --color그것이 의미하는 grep --color=auto출력 단자가 있는지 여부를 감지하는 만약 그렇다면 색상을 할 수 있습니다. 그러나 파이프를 감지하면 색상이 비활성화됩니다. 다음 명령 :

grep --color=always "search string" * | less -R

항상 색상을 활성화하고 자동 감지를 무시하며 색상 강조 표시가 줄어 듭니다.

경고 : --color=always별명으로 쓰지 마십시오 . 때때로 문제가 발생합니다. 이것이 --color=auto옵션 이있는 이유 입니다.


답변

view대신에 사용하십시오 less. 파일을 vim읽기 전용 모드로 엽니 다 .

그것은 실제로 착색되어 있습니다 less: 당신이 /(및 그 이상으로) 검색 할 수있는 호출기 . 유일한 단점은 당신이 빠져 나올 수는 q없지만:q

또한 vim(실제로 사용하고 있기 때문에) 와 동일한 색상이 표시됩니다 vim.


답변

색상을 표시하지 않으려면 -R로 호출하십시오.

less -R

불행히도 일부 프로그램은 stdout이 터미널이 아니라는 것을 감지하고 색상을 비활성화합니다 (예 : pacman (Arch Linux package manager)).

이 경우 다음을 사용할 수 있습니다 unbuffer.

unbuffer <command> | less -R

팩맨을 사용한 예제

unbuffer pacman -Ss firefox | less -R

unbuffer명령은 일반적으로 패키지 expect(Arch Linux, Debian / Ubuntu) 또는 expect-dev(레거시 버전의 Debian / Ubuntu)의 일부입니다.

완전성에 대한 질문에 대답하려면 :

다른 사람들이 이미 대답했듯이 pygmentize소스 코드를 채색하는 데 좋습니다. 필요하지 않습니다 unbuffer. 가장 쉬운 전화 :

pygmentize someSource.cpp | less -R


답변

pygmentize-g사용되는 어휘 분석기를 자동으로 추측 할 수 있는 옵션을 지원하며, STDIN확장자 유형을 확인하지 않고 읽은 파일에 유용 합니다.

이를 사용하면 .bashrc추가 스크립트없이 다음 두 내보내기 만 설정하면됩니다 .

export LESS='-R'
export LESSOPEN='|pygmentize -g %s'


답변

이 색의 의미를 말하지 않았습니다. 예를 들어 텍스트 파일의 색은 무엇입니까?

원하는 것이 소스 코드의 구문 강조 표시 인 경우 소스 코드 강조 표시기가 필요합니다. 때때로 이렇게 피그먼트를 사용 합니다

pygmentize file.cpp | less

또는

pygmentize file.cpp | more

주변에 다른 형광펜이 있습니다.

이것은 매우 빠릅니다. 실행을 신경 쓰지 않으면 vim에 읽기 전용 모드가있어 구문 강조 표시가 가능합니다 vim.

view file.cpp

또는 churnd의 답변을 참조하십시오.