의사 터미널이 서로 제어하고 반환 표시를 얻는 방법

의사 터미널이 서로 제어하고 반환 표시를 얻는 방법

문제는: 내 의사 터미널은 /dev/pts/0이고, 대상 의사 터미널은 /dev/pts/4이며, 텍스트 dev/pts/4를 인쇄하기 위해 대상 의사 터미널을 얻으려고 합니다. 에코 텍스트 > / 명령을 사용합니다.

따라서 첫 번째 질문은 다음과 같습니다. echo text > /dev/pts/4 명령을 사용한 후 대상 호스트에 텍스트가 표시되지만 한 가지 단점은 텍스트를 표시한 후 대상에 다른 줄이 표시되고 Ctrl+를 눌러야 한다는 것입니다. c 수동 종료, 위 상황을 피하는 방법은 무엇입니까?

둘째, man pty > /dev/pts/4를 사용한 후 대상 의사 터미널이 pty 매뉴얼을 열지만 단점은 내 의사 터미널도 텍스트를 표시한 후 빈 줄을 생성한다는 것입니다. 종료하기 위해 ctrl + c를 사용하려고 시도했지만 작동하지 않으며 문제를 해결하는 유일한 방법은 의사 터미널을 닫는 것입니다. 그래서 백그라운드에서 man pty > /dev/pts/4 &를 다시 실행해 보았습니다. 의사 터미널에는 빈 줄이 표시되지 않았지만 대상 의사 터미널에는 man 매뉴얼이 표시되지 않았습니다.

두 번째 질문은 대상 의사 터미널이 매뉴얼을 정상적으로 표시하도록 만드는 방법입니다. 그러나 내 의사 터미널은 빈 줄과 캐리지 리턴을 표시하지 않습니다.

마지막 문제는 대상 의사 터미널의 모든 표시를 가로채고 싶다는 것입니다.

많은 질문과 설명이 있습니다. 답변해 주셔서 감사합니다!

답변1

추가 입력이 필요할 수 있습니다. 개행 문자를 보내면 명령이 완료되었음을 대상 셸에 알리는 데 도움이 될 수 있습니다.

echo -n text > /dev/pts/4

또는 -e개행 추가를 사용하세요. 동일한 차이점이 있습니다.

echo -e "text\n" > /dev/pts/4

-s이 옵션은 다음과 함께 사용할 수 있습니다 man.

man -s pty > /dev/pts/4

이것~해야 한다매뉴얼 페이지가 로드된 후 대상 의사 터미널이 새 줄을 표시하는 것을 방지합니다. 페이지를 리디렉션하는 "올바른" 방법 man은 다음 script명령을 사용하여 상호 작용할 새 셸 세션을 만드는 것입니다.

script -q -c 'man pty' /dev/pts/4

환경 변수(예:학기그리고휴대용 소형 무선 호출기)가 대상 터미널에 대해 올바르게 설정되었습니다.

특정 의사 터미널로 전송된 모든 출력을 가로채 려면 tee./dev/pts/4

{ echo "text" ; other_command ; } | tee /dev/pts/4

echo "text"이는 sum 출력을 other_command현재 터미널 sum 으로 보냅니다 /dev/pts/4.

캡쳐하고 싶은 장소아무것프로세스를 으로 보내려면 세션 공유 및 로깅을 허용하기 위해 시스템 호출 추적 또는 터미널 멀티플렉서(예: 또는 ) /dev/pts/4를 포함해야 합니다 .screentmux

아, 그리고 tee빈 줄에도 도움이 됩니다: echo text | tee /dev/pts/4.

관련 정보