[unix] 구문 강조 / 컬러링 고양이

출력을 채색하는 방법이 있습니까? cat 방법은, grep수행은.

의 경우 grep대부분의 콘솔에서 검색된 키워드를 강조 표시하는 컬러 출력을 표시합니다. 그렇지 않으면, 당신은 전화하여 강제로 할 수 있습니다grep --color
당신의 개인적인 선택에 따라 프로그램의 출력을 색칠하는 일반적인 방법이 있습니까?

내가 이해 한 바에 따르면, 프로그램 자체는 색상에 대한 책임이 없습니다. 껍질입니다.

나는 FreeBSD 5.2.1에서 기본 쉘을 사용하고 있는데, 그것은 시대 이후로 색을 본 적이없는 것처럼 보입니다.



답변

cat구문 강조 표시는 단순히 범위를 벗어납니다. cat그런 의미가 아닙니다. 일부 파일의 전체 내용을 어떤 방식으로 (전체 파일에 대해 동일한 색상으로) 채색하려면 터미널 이스케이프 시퀀스를 사용하여 색상을 제어 할 수 있습니다.

파일 유형에 따라 색상을 선택하는 샘플 스크립트는 다음과 같습니다 ( cat직접 호출하는 대신 이와 같은 것을 사용할 수 있음).

#!/bin/bash
fileType="$(file "$1" | grep -o 'text')"
if [ "$fileType" == 'text' ]; then
    echo -en "\033[1m"
else
    echo -en "\033[31m"
fi
cat $1
echo -en "\033[0m"

위의 (이스케이프 시퀀스를 지원하는 터미널에서) 텍스트 파일을 ‘bold’로 인쇄하고 이진 파일을 빨간색으로 인쇄합니다. 이진 파일을 인쇄 하는 strings대신 사용할 수 있으며 cat필요에 맞게 논리를 향상시킬 수 있습니다.


답변

pygmentize파이썬 패키지에서 추천 합니다 python-pygments. ccatccrypt 패키지에서 사용하지 않는 한 다음과 같은 편리한 별칭을 정의 할 수 있습니다 .

alias ccat='pygmentize -g'

pygmentize를 사용한 구문 강조 고양이 출력

그리고 줄 번호를 원한다면 :

alias ccat='pygmentize -g -O style=colorful,linenos=1'


답변

옵션 :

피그 니 제이션 이 좋습니다. 별칭이 있습니다.

alias c='pygmentize -g'

그러나 하이라이트 는 널리 사용 가능한 또 다른 대안입니다.

alias cats='highlight -O ansi --force'

설치:

다음을 사용 pygments하여 설치해야 할 수도 있습니다 .

sudo pip install pygments
sudo easy_install Pygments #for Mac user

과에 대한 highlight패키지를 배포하는 모든 경우에 쉽게 사용할 수있는

sudo apt-get install highlight
sudo yum install highlight

실제로 :

하이라이트를 잘 비교하기 위해 아래에 샷을 첨부하고 있습니다.

다음은 pygmentize실제로 적용되는 것입니다.
파이썬 파일에서 강조 표시 피그먼트

그리고 이것은 highlight:
파이썬 파일에서 강조 표시 강조


답변

2018 년 4 월 말부터 :

Bat- 구문 강조 표시 및 Git 통합이 포함 된 cat (1) 클론.

이 프로젝트는 Rust로 작성된 색상 및 사용자 정의를 지원하는 고양이 복제품입니다. 여러 테마를 사용한 구문 강조뿐만 아니라 Git 통합도 제공합니다. 설명서에 설명 된대로 :

박쥐는 다음 목표를 달성하려고합니다 .

  • 아름다운 고급 구문 강조 기능 제공
  • 파일 수정을 보여주기 위해 Git과 통합
  • (POSIX) 고양이를 대체품으로 교체하십시오
  • 사용자에게 친숙한 명령 줄 인터페이스 제공

말할 필요도없이, 피그 니 제이션보다 훨씬 빠르며 큰 파일에 직면 할 때 질식하지 않습니다.

소스 코드 및 바이너리 릴리스 + 설치 지침 은 Github 리포지토리 및 대체 프로그램과 비교할 수 있습니다 .


답변

vimcat 단일 파일 (쉘 스크립트)이며 잘 작동합니다.

http://www.vim.org/scripts/script.php?script_id=4325

마지막 업데이트는 2013 년 12 월입니다. 힌트 : 파일 형식을 강제로 인식 할 수 있습니다 vimcat -c "set ft=<type>".


답변

당신이 찾고있는 도구는 아마도 슈퍼 캣 일 것 입니다 (여기에 빠른 소개가 있습니다) Linux Journal에서 출판 한 ).

이 답변이 늦었으며 OP 요구 사항을 완전히 충족하지 못한다는 것을 알고 있습니다. 그래서 참조 용으로 추가하고 있습니다 (텍스트 파일 출력을 채색하는 방법을 찾는 다른 사람들에게 유용 할 수 있음).


답변

cat- ccat 의 색상 버전이 있습니다. https://github.com/jingweno/ccat/ 에서 가져옵니다. .

Linux / Windows / macOS에 설치

단일 독립 실행 형 실행 파일이므로 설치하려면 https://github.com/jingweno/ccat/releases 에서 OS의 바이너리 버전을 풀고 ccat 바이너리를 복사하십시오./usr/local/bin .

바이너리를 피하거나 플랫폼에 바이너리가없는 경우 (예 : raspberry pi 등), go개발 환경 ( apt install golangdebian 기반 Linux 또는 brew install golangmac) 이있는 경우 소스에서 번갈아 컴파일 할 수 있습니다 .

go get -u github.com/jingweno/ccat

ccat진은 아래에 생성됩니다 $GOPATH/bin.

homebrew를 통해 Mac에 설치

brew install ccat

별칭 cat

일반 catccatadd in으로 바꾸려면 ~/.bashrc:

alias cat="ccat $*"
alias cat0="/bin/cat $*" # for cases when you need plain `cat`

ccatGo 에서 구현 되므로 , 뒤에있는 모듈 인 pygments 와 같은 Python 기반 솔루션보다 훨씬 빠르게 실행되는 기본 바이너리입니다 pygmentize. cat와 사이에 눈에 띄는 속도 차이가 보이지 않았습니다 ccat.