Zeilenbearbeitung für Benutzereingaben ausführen (Skriptbefehl)

Zeilenbearbeitung für Benutzereingaben ausführen (Skriptbefehl)

Ich habe das scriptProgramm verwendet, um eine interaktive Sitzung aufzuzeichnen:

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

Die Sequenz <-stellt das Backspace-Zeichen dar.

Ich möchte folgendes als Ausgabe:

$ printf "hello\n"
$ exit

Das tatsächliche Ergebnis enthält jedoch alle einzelnen Tastenanschläge (siehe cat --show-nonprinting).

Ich habe versucht, mit dem Befehl Zeile für Zeile zu lesen read. Dabei werden die Rücktasten entfernt, aber auch die Eingabeaufforderung wird entfernt und es scheint, als würde es \nin konvertiert n.

Ich suche nach einer Möglichkeit, den Text, den der Benutzer gesehen hat, auf dem Bildschirm anzuzeigen (Eingabeaufforderung, bearbeitete Eingabe und Befehlsausgabe – Farben spielen keine Rolle).


Als Referenz eine Beispielausgabe:

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

Antwort1

IIUC,ansi2txtwird genau das tun, was Sie wollen:

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

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

verwandte Informationen