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