알 수 없는 파일 형식을 포함한 고양이 출력을 흑백으로 색상화하는 방법은 무엇입니까?

알 수 없는 파일 형식을 포함한 고양이 출력을 흑백으로 색상화하는 방법은 무엇입니까?

나는 내 색깔을 좋아한다 vim. 를 실행할 때 비슷한 색상으로 출력되도록 할 수 있습니까 cat?

아래와 같이 음영 도구를 사용할 수 있다는 점이 마음에 듭니다.소스 및 스크립트 파일에 색상이 있는 "cat"이 있습니까?. 나는 이것을 내 표준으로 삼고 싶습니다 cat. 예를 들어 별칭을 만듭니다.

alias cat="source-highlight --out-format=esc -o STDOUT -i"

그러나 파일 형식을 알 수 없으면 다음 .gitignore이 반환됩니다.

$ cat .gitignore_global
source-highlight: could not find a language definition for input file .gitignore

인식된 파일 형식인 경우 명령이 특정 버전을 실행하도록 하려면 어떻게 해야 하나요? 그렇지 않으면 source-highlight cat파일의 표준 흑백 버전만 실행하게 할 수 있나요?cat

한 가지 옵션은 별칭을 사용하는 것이지만 ccat가능하다면 별칭 자체로 바꾸는 것을 선호합니다 cat.

cat *.rb(또는 심지어 ccat *.rb) 와 같은 와일드카드를 사용할 수 있으면 좋을 것 같습니다 . 현재 다음을 제공합니다:

$ ccat *.rb
Please, use one of the two syntaxes for invocation: 
source-highlight [OPTIONS]... -i input_file -o output_file
source-highlight [OPTIONS]... [FILES]...

다음과 같이 할 수 있다면 좋을 것입니다.

ls *.rb | xargs ccat # (or cat)

나는 이것을 할 수 있다:

ls *.rb | xargs cat

현재 나는 다음을 얻습니다:

$ ls *.rb | xargs ccat
xargs: ccat: No such file or directory

답변1

아마도 다음 스크립트와 같은 작업을 수행할 수 있습니다(테스트되지 않음).

#!/bin/sh

for fn in "$@"; do
    source-highlight --out-format=esc -o STDOUT -i $fn 2>/dev/null || /bin/cat $fn
done

이는 몇 가지 작업을 수행합니다.

  • 각 명령줄 인수를 반복합니다.
  • 을 실행하고 source-highlight오류 출력을 다음으로 리디렉션해 보세요./dev/null
  • source-highlight실패 하면 정상적으로 실행/bin/cat

cdc이 스크립트를 example이라는 파일에 넣은 다음 alias cat=cdc.

함수로

위 스크립트를 Bash 함수 호출에 적용한 다음 다음과 같이 도트 파일에 통합할 수 있습니다.

cdc() { 
  for fn in "$@"; do 
    source-highlight --out-format=esc -o STDOUT -i $fn 2>/dev/null || /bin/cat $fn;
  done 
}

편집(Michael) 어떤 이유로 ccat함수 이름을 사용하려고 하면 작동하지 않았지만 cdc작동합니다!

관련 정보