Ruby 有没有办法阻止基于ncurses的程序运行?

Ruby 有没有办法阻止基于ncurses的程序运行?,ruby,shell,unix,virtual,ncurses,Ruby,Shell,Unix,Virtual,Ncurses,嘿,我正在构建一个远程shell服务器,它在纯文本客户端和虚拟shell之间进行接口 当使用常规shell命令时,它工作得非常好,但人们在这之后尝试的第一件事是vim,它会立即让我的服务器疯狂,甚至无法远程关闭 有没有办法检测基于ncurses的程序并阻止它们在我的特殊shell中运行 (服务器是ruby,但任何系统命令都可以)您可以通过将TERM environment变量设置为正确的值来声明shell的功能。例如,如果您的shell具有与vt100终端相同的功能,请将术语导出为正确的值,像v

嘿,我正在构建一个远程shell服务器,它在纯文本客户端和虚拟shell之间进行接口

当使用常规shell命令时,它工作得非常好,但人们在这之后尝试的第一件事是vim,它会立即让我的服务器疯狂,甚至无法远程关闭

有没有办法检测基于ncurses的程序并阻止它们在我的特殊shell中运行


(服务器是ruby,但任何系统命令都可以)

您可以通过将TERM environment变量设置为正确的值来声明shell的功能。例如,如果您的shell具有与vt100终端相同的功能,请将术语导出为正确的值,像vim这样的程序将遵守该值

要在vt100模式下运行vim,请尝试:

TERM=vt100 vim
您也可以尝试:

export TERM=dumb
诀窍是找到一个与您正在创建的功能相对应的终端。有很多选择。在我的系统(Arch Linux)上,这给了我一长串的选择:

find /usr/share/terminfo
您可能能够找到与您的程序可以处理的内容相对应的终端规范

可选地,您可能需要考虑为ANSI或VT100:

实现终端仿真。


祝你好运

您可以通过将TERM环境变量设置为正确的值来声明shell所具有的功能。例如,如果您的shell具有与vt100终端相同的功能,请将术语导出为正确的值,像vim这样的程序将遵守该值

要在vt100模式下运行vim,请尝试:

TERM=vt100 vim
您也可以尝试:

export TERM=dumb
诀窍是找到一个与您正在创建的功能相对应的终端。有很多选择。在我的系统(Arch Linux)上,这给了我一长串的选择:

find /usr/share/terminfo
您可能能够找到与您的程序可以处理的内容相对应的终端规范

可选地,您可能需要考虑为ANSI或VT100:

实现终端仿真。


祝你好运

我还发现了这个页面,它有一个友好的方法和很好的转义代码概述:转义序列可以令人惊讶地娱乐。例如,要重置终端,只需echo-en“\033c”,我还找到了这个页面,它有一个友好的方法和很好的转义码概述:转义序列可以令人惊讶地娱乐。例如,要重置终端,只需echo-en“\033c”