Ejecutar edición de línea para entrada del usuario (comando de script)

Ejecutar edición de línea para entrada del usuario (comando de script)

Utilicé el scriptprograma para grabar una sesión interactiva:

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

La secuencia <-representa el carácter de retroceso.

Quiero lo siguiente como resultado:

$ printf "hello\n"
$ exit

Pero el resultado real contiene todas las pulsaciones de teclas individuales (mirando con cat --show-nonprinting).

Intenté leer línea por línea con el readcomando. Edita los retrocesos, pero también elimina el símbolo del sistema y parece que se convierte \nen n.

Estoy buscando una manera de tener el texto que el usuario estaba viendo en la pantalla (símbolo del sistema, entrada editada y salida del comando; los colores no importan).


Como referencia, un resultado de muestra:

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

Respuesta1

IIUC,ansi2txtHará exactamente lo que quieras:

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

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

información relacionada