![rev를 다시 파이핑할 때 rev를 매뉴얼 페이지로 사용하는 프로그램이 실패하는 이유는 무엇입니까?](https://linux55.com/image/69201/rev%EB%A5%BC%20%EB%8B%A4%EC%8B%9C%20%ED%8C%8C%EC%9D%B4%ED%95%91%ED%95%A0%20%EB%95%8C%20rev%EB%A5%BC%20%EB%A7%A4%EB%89%B4%EC%96%BC%20%ED%8E%98%EC%9D%B4%EC%A7%80%EB%A1%9C%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9D%B4%20%EC%8B%A4%ED%8C%A8%ED%95%98%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
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
...동등합니다.