确定ruby脚本在哪个终端上运行

确定ruby脚本在哪个终端上运行,ruby,Ruby,我正在创建一个使用SGR代码的gem。我发现自己的终端之间存在差异。例如,.\E[2m在Ubuntu的gnome终端中生成模糊的文本,但\E[2m在Windows 8.1的Ruby命令提示符中什么都不做。因此,我的Ruby程序需要知道它在哪个终端上运行,并从那里使用或不使用某些sgr代码 有没有一个神奇的子弹,在纯ruby中,或者希望有一个gem,来找出我们正在运行的终端?我指的是任何终端,无论多么奇特。我希望能够做到这一点,这取决于我们正在运行的终端我的gem在这是伪代码,MagicBulle

我正在创建一个使用SGR代码的gem。我发现自己的终端之间存在差异。例如,.\E[2m在Ubuntu的gnome终端中生成模糊的文本,但\E[2m在Windows 8.1的Ruby命令提示符中什么都不做。因此,我的Ruby程序需要知道它在哪个终端上运行,并从那里使用或不使用某些sgr代码

有没有一个神奇的子弹,在纯ruby中,或者希望有一个gem,来找出我们正在运行的终端?我指的是任何终端,无论多么奇特。我希望能够做到这一点,这取决于我们正在运行的终端我的gem在这是伪代码,MagicBullet是属于gem的一个类,我希望你能告诉我:

MagicBullet.identify #=> ['gnome-terminal', '6.3.2']
或:

或:

或:

不管操作系统如何,是否有一种可靠的方法可以找到这些信息……这些信息感觉非常容易获得……可能是一个gem,它可以查找属于已知终端列表的一系列操作系统信号/进程,类似这样的东西。我试过ENV['TERM'],虽然它在gnome终端中返回:xterm,但我更希望它返回:gnome终端。在使用Ruby的命令提示符中,它返回nil,考虑到所有非linux的终端都将返回nil,这不是很有帮助。当然,如果!ENV['TERM'],我可以运行它然后使用一组不同的逻辑来查找终端的名称,但我觉得这并不能确定,它可能会在其他外来终端上失败

因此,作为回答,我想:

一个gem,它提供了一个可靠的方法来识别我们正在运行的终端和版本 这是一种纯ruby方式,提供了一种可靠的方式来识别我们正在运行的终端和版本 这个算法让我很好地识别了我们正在运行的终端和版本,我说的是各种各样的Linux、Sun Microsystems、苹果操作系统终端和第三方iTerm都是苹果操作系统的两个终端,比如说,MRI可以安装在任何终端上。
相关:标记为离题,因为您需要一个gem库、教程或某种软件来解决您的问题。
MagicBullet.identify #=> ['konsole', '4.5']
MagicBullet.identify #=> ['command-prompt', '13.37']
MagicBullet.identify #=> ['NeWT', '15.2']