나는 명령을 리눅스에서 파일을 읽을 때 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의 답변을 참조하십시오.