有没有办法阻止基于ncurses的程序运行?
问题描述:
嘿,我正在构建一个远程shell服务器,它在纯文本客户端和虚拟shell之间进行交互。有没有办法阻止基于ncurses的程序运行?
它使用普通的shell命令时效果很好,但人们尝试之后的第一件事情就是vim,它迅速将我的服务器驱动为疯狂,甚至无法远程关闭。
有没有办法检测基于ncurses的程序并阻止它们在我的特殊shell中运行?
(服务器是红宝石,但任何系统命令都可以)
答
你可以声明你的shell有能力,由TERM环境变量设置为正确的值。例如,如果你的shell和vt100终端具有相同的功能,那么将TERM输出到正确的值,像vim这样的程序会尊重它。
要以VT100模式的vim,尝试:
TERM=vt100 vim
您也可以尝试:
export TERM=dumb
关键是要找到对应于你所创造的东西的能力的终端。有很多可供选择的。在我的系统(Arch Linux的)这给了我的选择,一个长长的清单:
find /usr/share/terminfo
你也许能够找到对应于你的程序能够处理什么终端规范。
或者,你可能要考虑实施的终端仿真的ANSI或VT100:
http://en.wikipedia.org/wiki/ANSI_escape_code
http://www.termsys.demon.co.uk/vtansi.htm
祝您好运!
我还发现这个页面,它有一个友好的方法和漂亮的转义代码概述:http://wiki.bash-hackers.org/scripting/terminalcodes转义序列可以令人惊讶的有趣。重置终端,例如,只是回声-en“\ 033c” – Alexander 2011-05-31 20:19:31
谢谢,这种让我走上正轨。 – 2011-06-03 10:15:38