PAGER
나는 최근 환경 변수를 rev
농담 으로 설정하는 교활한 트릭을 생각해 냈습니다 . rev에 대한 매뉴얼 페이지를 읽으려고 하면 man rev
예상했던 것과 반대되는 내용이 보입니다.
호출기를 설정하지 않고 이 작업을 시도하려면 -P
다음과 같은 옵션을 사용할 수 있습니다. 대신 매뉴얼 페이지가 표시됩니다.man
man -P rev rev
rev
나를 혼란스럽게 하는 것은 단순히 rev 출력을 파이프하여 다시 올바르게 만들 수 없다는 것입니다. 실행을 시도했지만 man -P rev rev | rev
출력이 올바른 방식으로 나오지 않고 여전히 그 반대입니다.
아래와 같이 올바른 방식으로 오류 메시지가 표시됩니다.
mdoc warning: A .Bl directive has no matching .El (#58)
stderr
대신에 통과되기 때문에 이것이 올바른 방향이라고 생각합니다stdout
rev를 다시 파이프하면 모든 텍스트, 오류 메시지 등이 올바른 방향이 됩니다.
man -P rev rev | rev | rev
이 이상한 행동의 이유는 무엇입니까?
Ubuntu의 gnome 터미널에서 bash를 사용하고 있습니다.
답변1
man
이는 출력이 터미널로 전송되지 않으면 호출기가 사용되지 않기 때문입니다 . 출력이 파이프로 전송되면 cat
파이프의 출력일 뿐입니다. 그래서...
man rev | rev | rev
...그리고...
man -Prev rev | rev | rev
...동등합니다.