사용자 입력에 대한 줄 편집 실행(스크립트 명령)

사용자 입력에 대한 줄 편집 실행(스크립트 명령)

나는 이 script프로그램을 사용하여 대화형 세션을 녹음했습니다.

$ script
$ echo<-<-<-<-printf "hello\n"
$ exit

시퀀스는 <-백스페이스 문자를 나타냅니다.

나는 다음을 출력으로 원합니다 :

$ printf "hello\n"
$ exit

그러나 실제 결과에는 모든 개별 키 입력이 포함됩니다( 로 확인 cat --show-nonprinting).

명령 을 사용하여 한 줄씩 읽어 보았습니다 read. 백스페이스를 편집하지만 명령 프롬프트도 제거 \n하고 n.

나는 사용자가 화면에서 보고 있는 텍스트(명령 프롬프트, 편집된 입력 및 명령 출력 - 색상은 중요하지 않음)를 가질 수 있는 방법을 찾고 있습니다.


참고용 샘플 출력은 다음과 같습니다.

^[[?2004l^M^[[?2004h$ echo^H^[[K^H^[[K^H^[[K^H^[[Kprintf "hello\n"^M
^[[?2004l^Mhello^M
^[[?2004h$ exit^M
^[[?2004l^Mexit^M

답변1

IIUC,ansi2txt당신이 원하는 것을 정확히 할 것입니다:

$ ansi2txt typescript > ANSI2TXT
$ cat ANSI2TXT
$ printf "hello\n"
hello
$ exit

Script done on Wed 15 Apr 2020 07:48:55 PM CEST

관련 정보