Выполнить редактирование строки для пользовательского ввода (команда скрипта)

Выполнить редактирование строки для пользовательского ввода (команда скрипта)

Я использовал 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

МИК,ansi2txtсделает именно то, что вы хотите:

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

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

Связанный контент