Zsh : 자동으로 실행 된 명령 수정


9

최근에 MacPorts를 통해 grc (generic colorizer)를 시스템에 설치하여 기본적으로 지원하지 않는 많은 명령에 대해 컬러 출력을 얻을 수 있습니다 (아래 스크린 샷 참조). traceroute가있는 grc의 예
특정 명령이 아니라 모든 명령에 대해 grc를 자동으로 사용하고 싶습니다. zsh를 쉘로 사용합니다.

본질적으로 실행할 때마다 command -parameter 1 2 3자동으로로 실행되기를 원합니다 grc command -parameter 1 2 3. grc에 색상을 지정하기 위해 점점 더 많은 명령을 추가함에 따라 alias to 와 같은 별칭
을 사용하고 싶지 않습니다 .traceroutegrc traceroute

.zshrc에 대한 preexec 및 precmd 구성을 살펴 보았지만 원하는 것을 얻을 수있는 방법을 찾지 못했습니다.

답변:


6

accept-line 위젯을 재정 의하여이를 수행 할 수 있습니다.

add-grc() { [[ $BUFFER = grc* ]] || BUFFER="grc $BUFFER"; zle .$WIDGET "$@"; }
zle -N accept-line add-grc

그러나 "for i (..)", "var = x", "f () {"...와 같은 명령에는 문제가 발생할 수 있습니다.


좋은 지적. 이 솔루션이 자신을 만들 수있는 문제는 생각할 수 없었지만, 당신을 대신하여 옳습니다. 시간 내 주셔서 감사합니다.
Nit

이 방법의 한 가지 단점 grc은 모든 명령이 시작될 때 히스토리가 표시된다는 것입니다 .
joeytwiddle

6

다른 대안. 동일한 종류의 잠재적 인 문제 :

TRAPDEBUG() { eval "grc $ZSH_DEBUG_CMD"; setopt errexit; }

여기에 게시 된 솔루션에 대한 예외를 파악하는 대신 "grc"가 필요한 모든 명령에 대해 "별칭"을 사용합니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.