在过往,计算机操作系统往往具备多任务多用户的功能。当时,通过串口连接到计算机的设备仅依赖显示器与键盘,这类设备被称为终端。
在早期的计算机时代,终端更多地被视为一种硬件概念,是用户与主机进行交互的硬件设备。
随着Linux等操作系统的普及,字符命令窗口逐渐成为其重要组成部分。
随着硬件成本的降低,个人独占计算机操作的情况逐渐普遍,传统意义上的“终端设备”已不再常见。终端的概念逐渐演变为软件层面的工具程序。
以图示为例,Ubuntu 18中的那个字符命令窗口就是软件终端程序的一个实例。
从硬件终端到软件终端的转变中,用户通过终端与shell环境进行交互,实现命令的输入与输出。
那么,终端究竟是何用途呢?简单来说,终端提供了用户与系统进行交互的功能。用户可以通过终端发送命令至shell,并接收shell的执行结果。
Linux平台上有许多功能相似的终端工具软件,如Konsole、Terminator、TermKit等。在Ubuntu上,用户可以通过“sudo apt install”命令进行安装。尽管这些工具功能相似,但Ubuntu 18自带的终端通常已足够使用,无需额外安装。
在Windows平台上,“命令提示符”和“Windows Power Shell”同样被视为终端。
一个软件是否被称为“终端”,关键在于其是否具备向目标系统发送字符命令并接收字符响应的功能。这里的“目标系统”可以是硬件或软件。
例如,电影播放软件、浏览器等因不涉及字符命令的发送与接收,因此不被视为终端。一些软件如VSCODE虽然内部调用终端功能(如PowerShell),但我们不会将其称为终端。许多软件工具虽具备类似功能,但因主业并非此项,故我们仅称其具备终端功能而非将其视为终端。
之前提及的Windows和Linux下的终端程序,如“命令提示符”、“GUN console”等,均是通过shell与操作系统交互的内部工具。
除此之外,还有PuTTY、fish、Zsh、Xshell、SecureCRT等外部设备访问的终端工具。它们主要通过TCP/IP网络、串口、U等接口与目标系统进行通信。
在Windows平台上,“超级终端”与Xshell同属一类,均为访问外部设备系统的终端工具。
值得注意的是,目标系统既可以是外部设备也可以是本机软件。上述的区分并非绝对。