여러 LESSOPEN 스크립트를 연결하는 방법은 무엇입니까?

여러 LESSOPEN 스크립트를 연결하는 방법은 무엇입니까?

요즘 Linux 배포판에는 사용자가 압축 파일이나 PDF 파일 등을 쉽게 검사할 수 있는 기본 LESSOPEN설정이 있습니다./usr/bin/lesspipe

이제 Less에 구문 강조를 추가할 수 있는지 확인하고 싶습니다. 이건 하기 쉽죠강조된 소스. 나는 그것을 사용했고 LESSOPEN="| /usr/bin/source-highlight -i %s -q -f esc"훌륭하게 작동합니다.

그러나 이제 질문은 다음과 같습니다. lesspipe 및 source-highlight의 동작을 어떻게 얻을 수 있습니까? 단순히 하나씩 추가하는 것은 작동하지 않습니다.

$ export LESSOPEN="| /usr/bin/lesspipe %s | /usr/bin/source-highlight -i %s -q -f esc"
$ less foo
Invalid LESSOPEN variable

그것도 말이 안 되니 별로 놀랄 일도 아니다.

복잡한 스크립트를 작성하지 않고도 설정할 수 있나요? 가장 좋은 시나리오는 연결을 수행하는 것입니다. 즉, 압축된 파일에 구문 강조 표시를 제공하는 것입니다.

답변1

초기 파이프 뒤의 변수에 있는 명령은 LESSOPEN환경 변수가 나타내는 셸에 의해 실행되며 SHELL표준 출력에 필요한 콘텐츠를 생성해야 합니다.

lesspipe표준 입력에서 읽고 표준 출력에 쓰는 다른 명령에 입력으로 출력을 전달할 수 있습니다 . 그러나 표준 입력에서 읽으려면 source-highlight강조 표시할 언어를 알려주어야 하므로 source-highlight이 방법은 작동하지 않습니다.

lesspipe파일 형식이 인식되지 않으면 아무 것도 인쇄하지 않으므로 원본 파일을 읽는다는 의미로 해석되기 어렵습니다 . 당신이 가지고 있다면ifne~에서Joey Hess의 moreutils, 이를 사용하여 이러한 상황을 감지하고 source-highlight대안을 시도할 수 있습니다. 원본 파일 이름을 변수에 저장해야 두 번 사용할 수 있습니다.

LESSOPEN='|file=%s; /usr/bin/lesspipe "$file" | /usr/bin/ifne -n /usr/bin/source-highlight -i "$file" -o STDOUT 2>/dev/null'

-r색상이 덜 자주 렌더링되도록 하려면 시작 후에 또는를 입력 해야 합니다 .-R$LESS-r-Rless

관련 정보