Execute a edição de linha para entrada do usuário (comando de script)

Execute a edição de linha para entrada do usuário (comando de script)

Usei o scriptprograma para gravar uma sessão interativa:

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

A sequência <-representa o caractere de retrocesso.

Quero o seguinte como saída:

$ printf "hello\n"
$ exit

Mas o resultado real contém todas as teclas individuais (olhando com cat --show-nonprinting).

Tentei ler linha por linha com o readcomando. Ele edita os retrocessos, mas também remove o prompt de comando e parece que é convertido \nem n.

Estou procurando uma maneira de exibir o texto que o usuário estava vendo na tela (prompt de comando, entrada editada e saída de comando - as cores não importam).


Para referência, um exemplo de saída:

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

Responder1

IIUC,ansi2txtfará exatamente o que você deseja:

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

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

informação relacionada