如何解决是否可以检测到需要“重置”的终端?
我编写的程序经常崩溃,使终端处于 S-Lang 库状态(类似于 ncurses)。我想为这种不正确的状态和 all
命令的自动调用添加一个检查到开发分支 Makefile main reset
目标。如何完成这项任务?
解决方法
reset
做了两件事;您可以编写一个检测其中一个的 shell 脚本:
- 它重置终端 I/O modes(shell 脚本可以使用
stty
检查) - 它将转义序列发送到终端(这通常会改变终端中没有合适的查询/报告转义序列的内容)。
对于后者,您会发现很难确定当前选择的字符集,例如画线。如果终端设置为显示画线字符,这就是有人想要运行 reset
(例如,将二进制文件显示到屏幕上)的常见原因。
恰好有一个 VT320 功能 (DECCIR
) 可以提供此信息(xterm 实现了该功能):
但对于其他终端,您不太可能发现它已实现:
(iTerm2 没有这样做)
(VTE 也没有)。您可以在 vt100.net
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。