为什么我们需要这么多的终端仿真器软件包,它们的用途是什么?


8

很长一段时间以来,这一直使我感到困惑。
我正在使用Linux,但是我在某些方面的理解上存在差距,其中一个是关于终端的。
当我了解它时,控制台的含义是旧终端的仿真器。
但是我不明白该怎么办。
在我阅读时,最好的旧终端是VT系列和矢量图形类型(Tektronix)。
因此,我假设当前的仿真器可以仿真这些仿真器。
现在,我在Linux中有关显示表示的需求已经达到了在文件中进行差异处理时使用colorcheme用于vim和欣赏颜色的程度。
但是,当我遇到问题时,通常会找到设置xterm-256或 其他方面的建议screen-256
此外,当我这样做时:ls /lib/terminfo/ 我看到大约有十二个目录,这些目录配置了(我假设)不同类型的仿真器类型。

所以我的问题是,在过去的几十年中,这些xterm-256screen-256其余的如何只模仿顶级终端?
有这么多终端类型需要什么?我需要进一步研究吗?
为何今天使用现代技术需要模仿VT这样的旧终端而又没有新东西呢?

也许我的需求太简单了,也太欣赏它的微妙之处,但这让我很困惑。因为例如如果我在colorcheme上有问题,我只复制粘贴我在google中找到的有关TERM等的内容,而无需真正了解我在做什么或出了什么问题。

如果有人帮助我理解这一点,将不胜感激


2
切线说明:设置$ TERM总是不好的建议(除非它在screentmux)...
jasonwryan 2014年

@jasonwryan:在所有显示问题中,所有帖子都提到将TERM切换到这个或那个,这使我的困惑更糟
Jim Jim

让terminfo db发挥作用;诸如设置术语值之类的变通方法.bashrc充其量只能掩盖潜在的问题,并且仅可能导致进一步的问题。
jasonwryan 2014年

这个想法不是仅支持过去几十年来的顶级终端,而是支持几乎所有可能的终端。terminfos并不是专为在Linux系统上使用而创建的,但是历史悠久。
萨米·莱恩

@SamiLaine:to support pretty much any terminal there might be..但是为什么呢?为什么我们要模拟70年代或80年代没有图形或绿屏的终端?
2014年

Answers:


9

Unix的怪异方面通常是有充分理由存在的,因此您应该寻找其中一个。但是,在这种情况下,好的理由早已过时,并且您正在查看过去时代的古董。

当今存在的唯一“终端” 就是 xterm和变体。它们的功能差别很小,只对少数几个程序重要。如果您仅使用xterm,而从不接触TERM变量或浏览terminfo数据库,那么您的生活通常会更好。

TERM变量通过环境将有关终端的信息传达应用程序,请参见。男人xterm。改变它不会改变终端 ; 它只是代表了应用程序的不同终端功能。

在接线端子时代,有必要设置TERM来代表所连接的端子。对于xterm,软件可以自行设置变量。快速浏览vim docs显示(如您在评论中所述),您必须对其进行更改以支持颜色。那对你来说是进步。

为什么今天……模仿VT这样的旧终端却没有新东西?

答案既是人类学上的,也是技术上的。

在GUI之前,通过哑终端(例如VT-100)访问Unix计算机。像top这样的shell和实用程序已经存在。当GUI在1980年代在技术上变得实用(在其中X发挥了作用)时,Unix用户仍然需要使用这些程序,因此发明了xterm来模仿老式的VT-100。

这只是权宜之计。“每个人都知道”终端是过去,GUI是未来,每个人都希望可以通过GUI访问“所有内容”。例如,原始的Macintosh没有箭头键,因为为什么需要它们?当然,这是隐秘的Unix命令行,缺少元音和无助的帮助

$ help
help: not found

很快就会成为鼓存储和打孔卡的方式。确实以某种方式实现了这一点:在10个运行Windows或OS X的用户中,只有9个用户永远不会看到命令行,除非技术支持人员来解决问题。

然后,Unix GUI发生了两件事。Windows尤其使钱从市场中流失了。对其进行了很大的标准化(参见Sun News和OSF Motif),然后在1990年左右停顿了下来。大约在那个时候,Internet腾飞了,Unix中的图形化内容转移到了Web浏览器中。为Unix设计一个完整的GUI并使手册第8节中的所有内容过时的动机和金钱(几乎是同一回事)消失了。

还有另一个原因,就是很少能预见:命令行比GUI具有某些优势。管道和正则表达式非常强大,更不用说可重复使用的Shell历史记录和脚本了。即使在GUI的上下文中,命令行仍然有用。如此之多,以至于直到今天它仍继续得到增强。

正如您的问题所暗示的,需要做的是重新检查GUI会取得成功的假设,并将终端重新设计成其不可或缺的一部分。我们需要一个新的终端,以比例字体和位寻址的图形终端

不幸的是,似乎没有人愿意这样做。没有公司实体会承担;市场巨大,但计算机用户仍然只占很小的比例。合乎逻辑的出资者将是像DARPA这样的政府机构,但是如今人们认为人机界面研究“完成了”(我们不是已经发明了GUI吗?)。直到更多的人(更多的人)意识到了需求,xterm才是您的朋友,并且也有可能成为您孙子的朋友。


““每个人都知道”终端是过去,GUI是未来,每个人都希望可以通过GUI访问“所有内容”。” 需要引用。
Faheem Mitha 2014年

+1。不错的答案。您注意:1)这If you just use xterm, and never touch the TERM...怎么可能?vim的任何colorcheme都需要这样的配置。因此,我不确定如何进行足够的教育以了解每个问题所需的配置更改?2)... today is xterm & variants怎么样screen-*?它是变体的一部分吗?用户需要了解的确切设置是什么?3)如果我理解正确,他们发现通过仿真器支持所有终端都比从头开始构建东西更容易?->
Jim Jim

那对我来说很奇怪(不再创造新的东西并支持所有现有的终端机)
Jim

感谢更新。最后一个问题:您提到:The TERM variable communicates information about the terminal...Changing it doesn't change the terminal;我不太了解这一点。我的意思是如果TERM不更改终端,那么终端是什么构成的,Linux如何知道要使用哪个terminfo db?
2014年

TERM实际上,变量的内容被用作terminfo数据库的索引。更改时,您正在xterm 托管的shell进程中更改环境变量的值。该外壳可能在另一台机器上:xterm -e 'ssh _machine_name_'。这不是xterm看到的值,因此不会以任何方式影响xterm的行为。这很令人困惑,因为xterm 设置了TERM变量(对您有利)来反映其配置(try xterm -t),而vim同时需要您自己进行设置。
James K. Lowden 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.