`cat`은 코드 마크 업을 사용하여 파일을 색상으로 표시 할 수 있습니까?


45

때로는 명령 줄에서 파일의 내용을 빨리보고 싶습니다. 이를 위해 물론 사용 cat하지만 파이썬 , 자바 또는 간단한 HTML의 소스 파일 인 경우가 많습니다 . 이러한 파일의 경우 파일에 cat약간의 색상 마크 업을 제공하여보다 쉽게 ​​읽을 수 있도록하는 것이 편리합니다.

cat그런 일을 할 수 있습니까 ?


여기에 이미 답변이있을 것입니다 .
Wilf

ha @wilf google : D와 동일한 코드를 찾았습니다. 또한 SO에서이 주제에 주목할 가치가 있습니다. superuser.com/questions/84426/…
Rinzwind

@Rinzwind-나는 그것이 올 것으로 바인딩되어 stackoverflow를 검색했다 ;-)
Wilf

이 질문은 나에게 cat -v해로운 것으로 생각 나게한다 .
Snowball

답변:


48

cat이 작업을 수행 할 수 없습니다. 그러나 피그먼트 가 도움이 될 수 있습니다. 파이썬 스크립트이며 apt-get을 통해 설치할 수 있습니다

sudo apt-get install python-pygments

또는 easy_install을 통해 쉽게 다운로드하여 설치할 수 있습니다.

많은 소스 코드 언어 와 마크 업 언어를 지원합니다

사용

pygmentize -g <filename>

5
파일을로 엽니 다 pygmentize -g <filename>. -g스위치는 렉서없이 파일을 처리하는 데 중요합니다. 예를 들어 /etc/fstab열지 않으면 열려고 -g하면 실패합니다.
souravc

감사합니다 @souravc 답변에 추가했습니다. 흥미롭게도,이 주장은 매뉴얼 페이지 나 도움말 페이지에서 언급되지 않은 것 같습니다
txwikinger

2
글쎄, 나는 그것을 많이 연주했다. 당신은 그것을 시도 찾을 수있는 pygmentize --help 경우에는이 -g파일의 내용에서 렉서를 추측, 또는이 (표준 입력이 캔 작업을) 실패 할 경우 일반 텍스트로 통과하려고 전달됩니다.
souravc

4
이것은 최고이며, -g를 피그 닝하는 별칭 고양이이며 황금색입니다. 물고기에서는 간단합니다 funced cat... type pygmentize -g $argv... save..funcsave cat.
Elijah Lynn

bashrc추가 : command -v pygmentize >/dev/null 2>&1 && alias cat='pygmentize -g'
Antonios Hadjigeorgalis

19

하지에서 cat자신은 있지만 같은 것을 사용할 수있는 소스 highlite 또는 supercat 또는 하이라이트

소스 하이라이트

소스 파일이 제공된이 프로그램은 구문 강조 표시가있는 문서를 생성합니다. 또한 C ++ 하이라이트 라이브러리 (신규) (버전 3.0부터)를 제공합니다.

소스 강조 표시는 소스 언어 사양을 동적으로 읽으므로 새 언어를 처리하기 위해 소스를 다시 컴파일하지 않고도 쉽게 확장 할 수 있습니다. 또한 출력 형식 사양을 동적으로 읽으므로 새로운 출력 형식을 처리하기 위해 소스를 다시 컴파일하지 않고도 쉽게 확장 할 수 있습니다. 이러한 사양의 구문은 매우 쉽습니다 (매뉴얼을 참조하십시오).

설치에 관한 매뉴얼 :

자세한 빌드 및 설치 지침은 INSTALL 파일을 참조하십시오. 어쨌든 소스와 함께 제공되는 Linux 소프트웨어를 컴파일하는 데 익숙한 경우 일반적인 절차, 즉 디렉토리에 다운로드 한 파일을 untar 한 다음 간단히 수행하면됩니다.

 cd <source code main directory>
 ./configure
 make
 make install

슈퍼 캣

Supercat의 홈페이지입니다. Supercat은 일치하는 정규 표현식 / 문자열 / 문자를 기반으로 텍스트를 색칠하는 프로그램입니다. Supercat은 표준 ASCII 텍스트뿐만 아니라 html 출력도 지원합니다. 존재하는 일부 텍스트 채색 프로그램과 달리 Supercat은 채색 규칙을 만들기 위해 프로그래머가 아니어도됩니다.

표준 파일 형식의 수퍼 캣 구성 파일을 작성했다면 수퍼 캣 배포에 포함될 수 있도록 "bug-spc (at) nosredna (dot) net"으로 연락하십시오.

또는 함수 ( source )를 사용하는 경우 :

#!/bin/bash#!/bin/bash
if [ ! -t 0 ];then
        file=/dev/stdin
elif [ -f $1 ];then
        file=$1
else
        echo "Usage: $0 code.c"
        echo "or e.g. head code.c|$0"
        exit 1
fi
pygmentize -f terminal -g $file

요구 사항 : 피그먼트 ( sudo apt-get install python-pygments python3-pygments) .functions 를 bash에 함수로 추가하고 color ()와 같은 이름을 지정하십시오.


14

이 답변 에서 와 같이 python-pygments패키지를 사용하여 물건을 강조 표시 할 수 있습니다 . 먼저 :

sudo apt-get install python-pygments python3-pygments

그때:

pygmentize -g FILENAME

그런 다음 가십시오 :

여기에 이미지 설명을 입력하십시오

링크 된 답변에서와 같이 별칭으로 설정할 수도 있습니다. 기본적으로 다음을 실행하십시오.

echo "alias catc='pygmentize -g'" >> ~/.bash_aliases 
chmod +x ~/.bash_aliases

터미널을 닫았다가 다시 열면 catc명령이 작동합니다. 그렇지 않으면 다음 행이 .bashrc파일에 있고 주석 처리가 제거 되었는지 확인 하십시오.

if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi

또 다른 것은 다음을 사용하는 것입니다 nano.

nano testfile

여기에 이미지 설명을 입력하십시오


6

man view 또는 man vim

기본 사용법 : view <filename>

종료 : :q<Return>(을 <Esc>사용 하는 경우 첫 번째 추가 vim) 또는 ZZ(대문자 z를 두 번).

프로그래머의 텍스트 편집기 vim에는 이미 필요한 모든 것이 있으며 이미 시스템의 일부일 수 있습니다.

vimview또는 로 읽기 전용 모드가 활성화되었습니다 vim -R. 마크 업 된 파일을 보는 것만으로 충분합니다.

어디서나 사용 가능하고 탐색이 가능합니다. 새로운 소프트웨어를 설치하거나 bash 스크립트를 작성하는 일을 망설 일 필요가 없습니다.


알아. 문제는 VIM을 열고 닫는 것이 빠르지 않다는 것입니다. 파일을 즉시보고 명령 행을 계속하고 싶습니다. 그렇기 때문에 피그먼트를하는 것이 좋습니다. 인스턴트 결과는, 어떠한 프로그램이나 아무것도 quiting 없습니다 .. :)
kramer65

1
@ kramer65 확인을 물론 그것은 당신의 선호,하지만 당신은 "개방"에 필요하지 않습니다 vim또는 view당신은 단지 파일을 제공 : view file.py차이가 없습니다 그래서이 함께 cat. 물론 당신은 그것을 닫을 필요하지만, 정말, :q<Return>또는 ZZ어려운 작업이 아니다.
다른 벤

가장 큰 문제는 vi / vim / view가 stdout에 쓰지 않기 때문에 위의 구문 강조 표시된 출력을 보는 동안 명령을 쉽게 작성할 수 없습니다.
Jack_Hu

4

ccat을 체크 아웃 할 수 있습니다 .

출력 파일에 구문 강조 표시를 추가합니다.


3

cat구문 강조 만 만들 수는 없습니다. 여전히을 사용하여 다음과 같이 할 수 있습니다 python-pygments. 먼저 터미널에서 다음과 같이 설치하십시오.

sudo apt-get install python-pygments

이제 아래 함수를 복사하십시오 ~/.bashrc. 그것은 또한cat 당신이 원하는 것을 줄 것 입니다. 그렇지 않으면 사용의 포인트가 없습니다.cat

catc(){
    cat "$@" > /tmp/.tmp
    pygmentize -g /tmp/.tmp
    rm /tmp/.tmp
}

다음 ~/.bashrc과 같이 소스

. ~/.bashrc

컬러 출력을 제공합니다.

catc <filename>

색상과도 연결됩니다.

catc <file1> <file2> ... <filen>

사용할 때 위쪽 및 아래쪽 화살표로 스크롤 할 수있는 방법이 있습니까? pygmentize? 양식의 명령 xterm -e "pygmentize -g <filename>" 을 사용하여 스크롤하고 스크롤하는 유일한 방법은 스크롤 막대를 사용하는 것입니다. 출력을 파이핑하려고했지만 less가비지 출력이 발생했습니다.
레오 시몬

pygmentize, 적은 비용으로 사용할 수 있습니다 . lessc다음과 같이 bash 함수 를 작성하십시오 .lessc () { pygmentize -gf terminal "$1" | less -R }
souravc

2

박쥐 — 날개를 가진 고양이 클론

bat다음 기능이있는 것을 확인할 수도 있습니다.

  • 구문 강조
  • 힘내 통합
  • 선택적으로 인쇄 할 수없는 문자 표시
  • 자동 페이징 less
  • 경로 cat재 지정시 대체 대체품으로 파일 연결

 시사

컬러 파일을 보여주는 박쥐의 스크린 샷

공식 GitHub 에서 찍은 사진

설치

최신 데비안 패키지를 여기 에서 구하여 설치할 수 있습니다 :

sudo dpkg -i bat_0.10.0_amd64.deb

버전 번호 및 아키텍처 조정



0

타사 패키지를 설치하는 대신 gedit구문 강조 표시 를 사용 하여 파일을 빠르게 볼 수 있습니다 . 예를 들어 위의 주소 표시 줄을 복사하여 터미널에 붙여 넣습니다.

gedit https://askubuntu.com/questions/405960/can-cat-show-files-using-code-markup-in-colors

이 질문은 HTML 형식의 색상으로 표시됩니다.

gedit https.png

  • 익숙한 gedit탐색 키를 사용할 수 있습니다
  • 줄 바꿈을 켜거나 끌 수 있습니다
  • 썸네일 슬라이더로 80 자 거터 및 문서 개요 (맨 오른쪽)에 설치 한 것과 같은 플러그인을 사용할 수 있습니다.
  • 유일한주의 사항은 키 입력을 닫을 필요가없는 시뮬레이션을 위해 창을 빠르게 닫으려면 Alt+ 를 기억해야한다는 것입니다 .F4cat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.