"less"는 Bash 및 Git에서 호출될 때 다르게 동작합니다.

"less"는 Bash 및 Git에서 호출될 때 다르게 동작합니다.

더 큰 차이점을 보려면 를 사용하여 git diff페이지를 매깁니다 less. 이는 다른 창을 열고 및 의 데이터를 검토하여 ps -aux확인할 수 있습니다 /proc.

그러나 lessGit에서 호출하면 적중 후 터미널 내용을 이전 상태로 복원하지 않습니다 q(차등 내용은 터미널에 남아 있음). 하지만 내가 할 때

git diff commit1 commit2 --color | less -R

less키를 눌러 종료하면 q내용이 사라지고 단말기는 이전 상태로 돌아갑니다.

내가 그렇게 한다면 훨씬 더 흥미로운 것은

export PAGER=less LESS='-R'

호출 git diff(또는 호출기를 호출하는 다른 명령)은 lessBash 셸에서 직접 호출하는 것과 동일하게 동작합니다.

나

다음은 내 문제를 설명하는 짧은 스크린샷입니다. 왼쪽 창에서 명령은 다음과 같이 실행됩니다.

unset PAGER GIT_PAGER LESS
git diff HEAD^ HEAD

오른쪽 창에서 명령을 볼 수 있습니다. 최신 커밋에는 y파일에 100줄 이상이 기록되었습니다. 종료하려면 두 창 모두에서 less키를 사용하세요 q.

차이점이 무엇인지 알려주고 그 이유를 설명할 수 있는 사람이 있나요?

답변1

문서:

LESS환경 변수가 설정되지 않으면 Git이 이를 설정합니다 ( FRX환경 LESS변수가 설정된 경우 Git은 이를 전혀 변경하지 않습니다).

-X( ) 옵션은 --no-init종료 후 터미널을 지우지 않는 역할을 합니다 less.

관련 정보