매뉴얼 페이지 리디렉션의 이상한 동작

매뉴얼 페이지 리디렉션의 이상한 동작

mc매뉴얼 페이지를 텍스트 파일로 리디렉션하고 싶었지만 man mc > mc실수로 그렇게 했습니다 man mc > mc grep. 결과는 mc두 개의 연결된 mc매뉴얼 페이지를 포함하는 텍스트 파일입니다.

그런 다음 이것을 시도했고 터미널에 매뉴얼 페이지와 오류 메시지가 포함된 텍스트 파일이 생성 man ls > 1 abc되었습니다 .1lsNo manual entry for abc

다음으로 나는 그것을 시도했다 man du > du ls tac. 세 개의 연결된 매뉴얼 페이지를 예상했지만 du실제 결과는 , 및 가 포함된 du매뉴얼 페이지라는 텍스트 파일 입니다 dulstac.

각 명령이 왜 그 결과를 생성합니까?

답변1

이는 Bash 매뉴얼의 상대적으로 모호한 섹션과 일치합니다. 이는 섹션 아래에 설명되어 있습니다.쉘 구문:

간단한 명령은 일련의 선택적 변수 할당과 공백으로 구분된 단어로 구성됩니다.그리고 리디렉션, 제어 연산자에 의해 종료됩니다. 첫 번째 단어는 실행할 명령을 지정하고 인수 0으로 전달됩니다. 나머지 단어는 호출된 명령에 인수로 전달됩니다.

(강조합니다.)

이는 명령 및 해당 매개변수와 모든 리디렉션을 "혼합"할 수 있음을 의미합니다.

echo > world hello를 들어 echo hello > world.

즉, 다음과 같은 명령을 실행하면 man du > du ls tac다음을 실행하는 것과 같습니다.

man du ls tac > du

세 맨페이지 모두 결국 이라는 파일로 연결됩니다. du이는 출력이 리디렉션되거나 파이프될 때의 동작의 결과입니다 man. 더 이상 호출기를 사용하려고 시도하지 않으며 기본적으로 처럼 동작합니다 cat.

답변2

참고용/호기심용:

귀하의 질문에 답변하지 않았다는 것을 알고 있지만 매뉴얼 페이지의 내용을 리디렉션해야 하는 경우 col(1)을 사용하여 이를 수행할 수 있습니다.

man 1 col | col -b -x > manfile.foo

관련 정보