에 따르면GNU 문서, 캐릭터가 있어요VREPRINT
, 또는 rprnt
, 이는 쉘의 라인 편집기의 입력 버퍼를 다시 인쇄해야 합니다. 이는 다른 명령을 입력하는 동안 백그라운드 프로세스와 같은 것이 PTY에 기록되고 입력과 함께 출력이 산재해 있는 경우 도움이 될 수 있습니다. 그런데 실제로 사용해 보았는데 별 효과가 없었던 것 같습니다. 나는 다음을 수행했습니다.
- Dockerhub의
sh
최신 이미지에 대한 세션을 실행합니다 .alpine
- 캐릭터를 에
stty
바인딩하는 데 사용합니다 .rprnt
^N
- 입력을 입력하세요
- 별도의 세션에서 첫 번째 세션의 PTY에 씁니다.
- 입력 내용을 다시 인쇄하려면 Ctrl-N을 눌러보세요.
입력을 새로 고치고 작성된 출력을 제거할 것으로 예상했습니다. 그러나 효과가 없었습니다. 내 라인 편집기를 여전히 복잡하게 만드는 출력이 있습니다. 나는 그것을 확인했고 icanon
이 iexten
PTY에 설정되어 있습니다.
답변1
나는 귀하의 쉘이 bash
모든 기능을 갖춘 라인 편집 기능을 갖춘 다른 쉘이라고 가정합니다.
이러한 쉘은 사용자가 명령을 입력하기를 기다리는 동안 tty 모드를 표준이 아닌 원시로 설정하므로 설정이 rprnt
적용되지 않습니다.
이러한 셸은 줄 편집 기간과 요청된 외부 프로그램(예: 자체) stty
을 실행하는 동안 설정을 앞뒤로 전환하기 때문에 명령줄 도구는 이를 다시 보고하지 않습니다. 이 터미널이 프롬프트에 있는 동안 다른 터미널에서 stty
실행하여 이를 확인할 수 있습니다 .stty -a < /dev/pts/[this-terminal's-number]
해주는 프로그램을 선택하세요~ 아니다cat
또는 이와 유사한 완전한 라인 편집 기능이 있습니다 dash
. stty rprnt ^N
미리 발행하고 누르면 ^N
실제로 주어진 줄이 다시 인쇄된다는 것을 알 수 있습니다 . 적어도 나는 확인했고 그것은 나에게 효과적입니다.
강력한 줄 편집 기능이 있는 쉘의 경우 프롬프트를 다시 인쇄하는 방법이나 핫키를 구성하는 방법을 보려면 해당 쉘의 문서(또는 라이브러리인 경우) bash
를 참조해야 합니다 .readline