![对用户输入运行行编辑(脚本命令)](https://linux22.com/image/171078/%E5%AF%B9%E7%94%A8%E6%88%B7%E8%BE%93%E5%85%A5%E8%BF%90%E8%A1%8C%E8%A1%8C%E7%BC%96%E8%BE%91%EF%BC%88%E8%84%9A%E6%9C%AC%E5%91%BD%E4%BB%A4%EF%BC%89.png)
我用该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