VREPRINT는 아무런 효과가 없는 것 같습니다.

VREPRINT는 아무런 효과가 없는 것 같습니다.

에 따르면GNU 문서, 캐릭터가 있어요VREPRINT, 또는 rprnt, 이는 쉘의 라인 편집기의 입력 버퍼를 다시 인쇄해야 합니다. 이는 다른 명령을 입력하는 동안 백그라운드 프로세스와 같은 것이 PTY에 기록되고 입력과 함께 출력이 산재해 있는 경우 도움이 될 수 있습니다. 그런데 실제로 사용해 보았는데 별 효과가 없었던 것 같습니다. 나는 다음을 수행했습니다.

  1. Dockerhub의 sh최신 이미지에 대한 세션을 실행합니다 .alpine
  2. 캐릭터를 에 stty바인딩하는 데 사용합니다 .rprnt^N
  3. 입력을 입력하세요
  4. 별도의 세션에서 첫 번째 세션의 PTY에 씁니다.
  5. 입력 내용을 다시 인쇄하려면 Ctrl-N을 눌러보세요.

여기에 이미지 설명을 입력하세요

입력을 새로 고치고 작성된 출력을 제거할 것으로 예상했습니다. 그러나 효과가 없었습니다. 내 라인 편집기를 여전히 복잡하게 만드는 출력이 있습니다. 나는 그것을 확인했고 icanoniextenPTY에 설정되어 있습니다.

답변1

나는 귀하의 쉘이 bash모든 기능을 갖춘 라인 편집 기능을 갖춘 다른 쉘이라고 가정합니다.

이러한 쉘은 사용자가 명령을 입력하기를 기다리는 동안 tty 모드를 표준이 아닌 원시로 설정하므로 설정이 rprnt적용되지 않습니다.

이러한 셸은 줄 편집 기간과 요청된 외부 프로그램(예: 자체) stty을 실행하는 동안 설정을 앞뒤로 전환하기 때문에 명령줄 도구는 이를 다시 보고하지 않습니다. 이 터미널이 프롬프트에 있는 동안 다른 터미널에서 stty실행하여 이를 확인할 수 있습니다 .stty -a < /dev/pts/[this-terminal's-number]

해주는 프로그램을 선택하세요~ 아니다cat또는 이와 유사한 완전한 라인 편집 기능이 있습니다 dash. stty rprnt ^N미리 발행하고 누르면 ^N실제로 주어진 줄이 다시 인쇄된다는 것을 알 수 있습니다 . 적어도 나는 확인했고 그것은 나에게 효과적입니다.

강력한 줄 편집 기능이 있는 쉘의 경우 프롬프트를 다시 인쇄하는 방법이나 핫키를 구성하는 방법을 보려면 해당 쉘의 문서(또는 라이브러리인 경우) bash를 참조해야 합니다 .readline

관련 정보