链接:https://blog.csdn.net/ltx06/article/details/52170852

https://blog.csdn.net/jirryzhang/article/details/70147827

https://www.google.co.in/search?q=%E5%93%91%E7%BB%88%E7%AB%AF%E6%98%AF%E4%BB%80%E4%B9%88&safe=active&ei=-ePFWrmzC4OP8wWY65ngBw&start=10&sa=N&biw=1366&bih=637

作者:任皓
链接:https://www.zhihu.com/question/51478942/answer/212057481
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

tty(teletypewriter)电传机,这边按一个按键,主机端接受到一个数据,主机端传出一个数据,电传机打印一个字符。

这个是一切终端(terminal)的祖先,输入字符和打印字符是一体的,主机里面运行的叫程序。

我输入一个字符,主机上接受到一个字符。那我想换行就麻烦了,因为这就是控制字符了,所有要有解释器能把输入来的字符进行分析处理,这个解释器就叫做shell。

显示器的出现,把输入和输出分离开了。时代的发展,我们不用电传机了,把显示器和键盘插到主机上,显示器负责显示程序的输出,键盘负责输入字符到程序里面去,这两个还是叫做终端。

因为linux一切皆文件,终端也是文件。那么就可以通过创建文件来虚拟终端,但是这些文件(虚拟终端)必须也要完成把信息输入到主机中,接受主机传出来的数据。

控制台是直接插到主机上和主机系统交互的终端,直接控制着主机。

后来不用直接插上了,就是虚拟控制台,特点是还能控制核心的东西,也有被用来指比较低级别的只能处理字符,通过字符控制主机的终端,这个概念就是命令行窗口,这里没有鼠标的事,以此和图形化的终端相区别。

伪终端(pseudo-terminal)是被xterm这样的终端模拟器程序在主机上运行模拟出来的终端,它由两个终端组成,一个伪终端主人ptmx,一个叫伪终端仆人pts。对终端主人的操作会被传输到终端仆人,反之亦然,多用在远程登录状态,我在电脑上操作远程的主机,就是操作远程主机上的终端主人,而远程主机还以为是一个人在自己的终端上进行操作,那就是终端仆人。主机上的程序告诉终端仆人的信息都会被通过终端主人传给我的电脑。

===========

哑终端是只依赖于主机才能进行处理的终端。哑终端没有处理器、硬盘或软盘,只有键盘、显示器和到主机的通信途径(通常通过一些类型的控制器)。而智能终端有自己的处理器、存储设备以及软件程序。

--------

终端Terminal通常是指那些与集中式主机系统(例如IBM大型计算机)相连的“哑”用户设备。终端从用户接收键盘输入,并且将这些输入发送给主机系统。主机系统处理这个用户的键盘输入和命令,然后输出返回并显示在这个终端的屏幕上。个人计算机可以运行称为终端仿真器的一些程序来模仿一个哑终端的工作。

linux 中ctrl+alt+t  打开一个终端。

============

终端,英文叫做terminal ,通常简称为term ,比如我们在X下的xterm.   

控制台,英文叫做console.

要明白这两者的关系,还得从以前的多人使用的计算机开始。大家都知道,最初的计算机由于价格昂贵,因此,一台计算机一般是由多个人同时使用的。在这种情况下一台计算机需要连接上许多套键盘和显示器来供多个人使用。在以前专门有这种可以连上一台电脑的设备,只有显示器和键盘,还有简单的处理电路,本身不具有处理计算机信息的能力,他是负责连接到一台正常的计算 机上(通常是通过串口) ,然后登陆计算机,并对该计算机进行操作。当然,那时候的计算机操作系统都是多任务多用户的操作系统。这样一台只有显示器和键盘能够通过串口连接到计算机 的设备就叫做终端。  而控制台又是什么回事呢? 学机电的人应该知道,一台机床,或者数控设备的控制箱,通常会被称为控制台,顾名思义,控制台就是一个直接控制设备的台面(一个面板,上面有很多控制按钮)。 在计算机里,把那套直接连接在电脑上的键盘和显示器就叫做控制台。请注意它和终端的区别,终端是通过串口连接上的,不是计算机本身就有的设备,而控制台是 计算机本身就有的设备,一个计算机只有一个控制台。计算机启动的时候,所有的信息都会显示到控制台上,而不会显示到终端上。也就是说,控制台是计算机的基 本设备,而终端是附加设备。 当然,由于控制台也有终端一样的功能,控制台有时候也被模糊的统称为终端。 计算机操作系统中,与终端不相关的信息,比如内核消息,后台服务消息,都可以显示到控制台上,但不会显示到终端上。  以上是控制台和终端的历史遗留区别。现在由于计算机硬件越来越便宜,通常都是一个人独占一台计算机超做,不再连接以前那种真正意义上的“终端设备了”,因此,终端和控制台的概念也慢慢演化了。终端和控制台由硬件的概念,演化成了软件的概念。现在说的终端,比如linux中的虚拟终端,都是软件的概念,他用计算机的软件来模拟以前硬件的方式。比如在linux中,用 alt+f1~f6 可以切换六个虚拟终端,就好比是以前多人公用的计算机中的六个终端设备,这就是为什么这叫“虚拟终端”的原因。当然,现在的linux也可以通过串口 线,连接一个真正的终端,现在这种终端设备已经非常罕见了,但是还存在,只是一般人很难见到。也有人利用以前的老电脑(386,486)装上一个串口通信 软件,连上一台计算机,来模拟一个终端来用。这样可以达到一台电脑多人使用的目的。简单的说,能直接显示系统消息的那个终端称为控制台,其他的则称为终端。但是在linux系统中,这个概念也已经模糊化了。比如下面这条命令:echo "hello,world" > /dev/console  这条命令的目的是将"hello,world"显示到控制台上/dev/console是控制台设备的设备名。在linux中,在字符模式下,你无论在哪个虚拟终端下执行这条命令,字符hello,world都会显示在当前的虚拟终端下。也就是说,linux把当前的终端当作控制台来看待。可见,linux中已经完全淡化了控制台和终端的区别。但是在其他的UNIX类系统中,却很明显的有虚拟终端和控制台的区别。比如 freeBSD系统。在freebsd中,只有第一个“终端”才是真正的控制台。(就是说按alt+f1得到的那个虚拟终端) ,你无论在哪个虚拟终端上执行上面的那条命令(哪怕是通过网络连接的伪终端上执行这条命令)。hello,world字符总会显示到第一个“终端”也就是 真正的控制台上。另外,其他的一些系统内部信息,比如哪个用户在哪个终端登陆,系统有何严重错误警告等信息,全都显示在这个真正的控制台上。在这里,就明显的区分了终端和控制台的概念。其他UNIX中也是这样的。比如Tru64 unix 在X下有一个控制台模拟软件,你无论在哪里输入echo "hello,world" > /dev/console命令,hello,world总会显示在这个控制台模拟器中。我们在X界面下用的那些输入命令的软件,比如xterm ,rxvt, gnome-terminal等等,都应该被称为终端模拟软件。请注意它和控制台模拟软件的区别。linux中好象没有控制台模拟软件。在X中的终端模拟软件中输入的echo "hello,world">/dev/console 命令的输出信息,都会输出到启动该X服务器的虚拟终端上。比如,你用字符方式登陆系统。进入第一个虚拟终端,然后startx启动X服务器。再打开 xterm 来输入echo"hello,world">/dev/console 命令,那么字符串hello,world就显示在第一个虚拟终端上。你按ctrl+alt+f1,回到那个启动X服务器的终端,就可以看到hello, world字符串。 现在该明白终端和控制台的区别了吧。再简单的说,控制台是直接和计算机相连接的原生设备,终端是通过电缆、网络等等和主机连接的设备。在以前的硬件终端设备中,由于生产厂家不同,所遵循的标准不同,因此有不同的型号标准。比如vt100等。这里的vt100就是一个标准,那么现在我 们所说的终端,往往不是真正的硬件终端了,而是终端模拟软件了,因此不同的终端模拟软件可能符合不同的标准,还有一些终端模拟软件符合很多种不同终端的标准。比如gnome的终端模拟软件gnome-terminal,他提供好几中标准可供用户选择。用户只要设置一下就可以了。现在,由于原先的这些设备在我们的视线中渐渐淡出,控制台和终端的概念也慢慢谈化。普通用户可以简单的把终端和控制台理解为:可以输入命令行并显示程序运行过程中的信息以及程序运行结果的窗口。不必要严格区分这两者的差别。——by:http://blog.csdn.net/caomiao2006/article/details/8791775******************************************************************华丽分割线********************************************************从历史角度看,终端刚开始就是终端机,配有打印机,键盘,带有一个串口,通过串口传送数据到主机端,然后主机处理完交给终端打印出来。
那么现在终端也就是键盘+显示器。但是不同的设备可能协议不同,要操作系统怎么识别呢?简单。就像linux 的虚拟文件系统一样,抽象出一层就可以了。
tty层横空出世,tty的一边是操作系统,一边是不同的设备驱动。大家知道,在linux下所有的设备都是文件,那么假设我们要打印到显示器,只要write到显示器对应的tty层的文件,然后它自己去匹配合适的驱动,这部分就不是系统考虑的问题了。
现在的终端还是实体(也就是有实际的硬件),只不过由tty层做了逻辑抽象。
但是随着互联网的兴起,人们有了远程使用计算机的要求,于是终端仿真系统诞生了。把本地PC当成是一个终端,远程的计算机当成是主机。由软件模拟硬件终端的工作过程(无非就是编码格式,电位等等,设计组成原理等)。比如现在嵌入式开发,不就是把个人PC当作输出输出工具,由开发板做主机么?
现在的个人计算机常常被仿真成一个终端与主机相连(虽然没让我发现有什么优点,也许是为了本地用户和远程用户的同等地位?)
人们用终端仿真技术开发了各种的虚拟终端,伪终端等等。相当于PC不在逻辑上处理数据,只是按照行业标准,进行数据传输(应该有编码过程?)和接受显示(解码?)
此时此刻,终端已经不是狭义的硬件了,它更多的被理解为模拟硬件的软件。
现在说说tty。之前提到了,抽象为了tty层。为什么叫tty呢?
Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,和古老的电报机区别并不是很大。最终,电传打字机被键盘和显示器终端(这里时硬件)所取代,但在终端或TTY接插的地方,操作系统仍然需要一个程序来监视串行窗口。一个getty“Get TTY”的处理过程是:一个程序监视物理的TTY/终端接口。从上面百度百科的定义,可以知道,后来getty就是一个见识TTY/终端的接口,那么这个将操作系统内核和终端连接的层叫什么名字也就呼之欲出了。——by:http://blog.chinaunix.net/uid-28596231-id-3516101.htmltty也是一个Unix命令,用来给出当前终端设备的名称。
终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。
在Linux系统的设备特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:
1.串行端口终端(/dev/ttySn)串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。有段时间这些串行端口设备通常被称为终端设备,因为那时它的最大用途就是用来连接终端。这些串行端口所对应的设备名称是/dev/tts/0(或/dev/ttyS0),/dev/tts/1(或/dev/ttyS1)等,设备号分别是(4,0),(4,1)等,分别对应于DOS系统下的COM1、COM2等。若要向一个端口发送数据,可以在命令行上把标准输出重定向到这些特殊文件名上即可。例如,在命令行提示符下键入:echo test > /dev/ttyS1会把单词”test”发送到连接在ttyS1(COM2)端口的设备上
2.伪终端(/dev/pty/)伪终端(Pseudo Terminal)是成对的逻辑终端设备(即master和slave设备,对master的操作会反映到slave上)。
例如/dev/ptyp3和/dev/ttyp3(或者在设备文件系统中分别是/dev/pty /m3和 /dev/pty/s3)。它们与实际物理设备并不直接相关。如果一个程序把ptyp3(master设备)看作是一个串行端口设备,则它对该端口的读/ 写操作会反映在该逻辑终端设备对应的另一个ttyp3(slave设备)上面。而ttyp3则是另一个程序用于读写操作的逻辑设备。telnet主机A就是通过“伪终端”与主机A的登录程序进行通信。
3.控制终端(/dev/tty)如果当前进程有控制终端(Controlling Terminal)的话,那么/dev/tty就是当前进程的控制终端的设备特殊文件。可以使用命令”ps –ax”来查看进程与哪个控制终端相连。对于你登录的shell,/dev/tty就是你使用的终端,设备号是(5,0)。使用命令”tty”可以查看它具体对应哪个实际终端设备。/dev/tty有些类似于到实际所使用终端设备的一个联接。4.控制台(/dev/ttyn, /dev/console)在Linux 系统中,计算机显示器通常被称为控制台终端(Console)。它仿真了类型为Linux的一种终端(TERM=Linux),并且有一些设备特殊文件与之相关联:tty0、tty1、tty2 等。当你在控制台上登录时,使用的是tty1。使用Alt+[F1—F6]组合键时,我们就可以切换到tty2、tty3等上面去。tty1–tty6等称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名,系统所产生的信息会发送到该终端上(这时也叫控制台终端)。因此不管当前正在使用哪个虚拟终端,系统信息都会发送到控制台终端上。/dev/console即控制台,是与操作系统交互的设备,系统将一些信息直接输出到控制台上。只有在单用户模式下,才允许用户登录控制台。5.虚拟终端在Xwindow模式下的伪终端.如在Kubuntu下用konsole,就是用的虚拟终端,用tty命令可看到/dev/pts/name, name为当前用户名。6.其他类型Linux系统中还针对很多不同的字符设备存在有很多其它种类的终端设备特殊文件。例如针对ISDN设备的/dev/ttyIn终端设备等。
tty设备包括虚拟控制台,串口以及伪终端设备。
/dev/tty代表当前tty设备,在当前的终端中输入 echo “hello” > /dev/tty ,都会直接显示在当前的终端中。
Text Telephones (TTY)
聋哑人电话,在手机插入专用设备后支持收发文本,需网络支持,中国网络不支持TTY.
除聋哑模式外,还支持只听不说(HCO)和只说不听(VCO)两种模式
——by:百度百科**************************************************************华丽分割线************************************************************shell   (计算机壳层)
在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。同时它又是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。PS:在排序算法中,Shell是希尔排序的名称。
基本上shell分两大类:
一:图形界面shell(Graphical User Interface shell 即 GUI shell)
例如:应用最为广泛的 Windows Explorer (微软的windows系列操作系统),还有也包括广为人知的 Linux shell,其中linuxshell 包括 X window manager (BlackBox和FluxBox),以及功能更强大的CDE、GNOME、KDE、 XFCE。
二:命令行式shell(Command Line Interface shell ,即CLI shell)
例如:
bash / sh / ksh / csh(Unix/linux 系统)
(MS-DOS系统)
cmd.exe/ 命令提示字符(Windows NT 系统)
Windows PowerShell(支援 .NET Framework 技术的 Windows NT 系统)
传统意义上的shell指的是命令行式的shell,以后如果不特别注明,shell是指命令行式的shell。
文字操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。
shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shell script(非交互)方式执行。shell script是放在文件中的一串shell和操作系统命令,它们可以被重复使用。本质上,shell script是命令行命令简单的组合到一个文件里面。
Shell基本上是一个命令解释器,类似于DOS下的command。它接收用户命令(如ls等),然后调用相应的应用程序。较为通用的shell有标准的Bourne shell (sh)和C shell (csh)。
交互式shell和非交互式shell
交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。
shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。
shell的类型
在UNIX中主要有:
Bourne shell (包括 sh,ksh,and bash)
Bourne shell ( sh)
Korn shell ( ksh)
Bourne Again shell ( bash)
POSIX shell ( sh)
C shell (包括 csh and tcsh)
C shell ( csh)
TENEX/TOPS C shell ( tcsh)
Bourne Shell
首个重要的标准Unix Shell是1970年底在V7 Unix(AT&T第7版)中引入的,并且以它的创始科技部基础条件平台“国家气象网络计算应用节点建设”(2004DKA50730)资助者Stephen Bourne的名字命名。Bourne shell 是一个交换式的命令解释器和命令编程语言。Bourne shell 可以运行为login shell或者login shell的子shell(subshell)。只有login命令可以调用Bourne shell作为一个login shell。此时,shell先读取/etc/profile文件和$HOME/.profile文件。/etc/profile文件为所有的用户定制环境,$HOME/.profile文件为本用户定制环境。最后,shell会等待读取你的输入。
C Shell
Bill Joy于20世纪80年代早期,在伯克利的加利福尼亚大学开发了C shell。它主要是为了让用户更容易的使用交互式功能,并把ALGOL风格的语法结构变成了C语言风格。它新增了命令历史、别名、文件名替换、作业控制等功能。
Korn Shell
有很长一段时间,只有两类shell供人们选择,Bourne shell用来编程,C shell用来交互。为了改变这种状况,AT&T的bell实验室David Korn开发了Korn shell。ksh结合了所有的C shell的交互式特性,并融入了Bourne shell的语法。因此,Korn shell广受用户的欢迎。它还新增了数学计算,进程协作(coprocess)、行内编辑(inline editing)等功能。Korn Shell 是一个交互式的命令解释器和命令编程语言.它符合POSIX——一个操作系统的国际标准.POSIX不是一个操作系统,而是一个目标在于应用程序的移植性的标准——在源程序一级跨越多种平台。
Bourne Again Shell (bash)
bash是GNU计划的一部分,用来替代Bourne shell。它用于基于GNU的系统如Linux.大多数的Linux(Red Hat,Slackware,Caldera)都以bash作为缺省的shell,并且运行sh时,其实调用的是bash。
POSIX Shell
POSIX shell 是Korn shell的一个变种. 当前提供POSIX shell的最大卖主是Hewlett-Packard。在HP-UX 11.0,POSIX shell 就是/bin/sh,而bsh是/usr/old/bin/sh.
各主要操作系统下缺省的shell:
AIX下是Korn Shell.
Solaris缺省的是Bourne shell.
FreeBSD缺省的是C shell
HP-UX缺省的是POSIX shell.
Linux是Bourne Again shell.(即bash)
Windows PowerShell是一种新的交互式的命令行和基于任务脚本编写技术,它使信息技术(IT) 管理员能够全面地自动操作和控制系统管理任务,从而提高了管理员的生产力。Windows PowerShell 包括多个系统管理实用工具、一致的语法和命名惯例、及对普通管理数据更好地导航,如登记、证书存储 或 Windows Management Instrumentation (WMI)。Windows PowerShell 还专门针对 IT 管理,提供直观的脚本编写语言。
Shell也是一个VB函数,它的作用是运行程序,语法是Shell(命令字符串[,窗口类型])            ——by:百度百科
++++++++++++++++++++++++++++++++++++++++++++++++++++华丽分割线++++++++++++++++++++++++++++++++++++++++++++++++++++++
我们在终端模拟器中输入命令时,终端模拟器本身并不解释执行这些命令,它只负责输入输出,真正解释执行这些命令的,是shell。

=================

那么到底为什么叫哑终端:

This article seems to be about computer terminals, not the subclass of computer terminals that are dumb.

I've always understood "dumb terminal" to mean a terminal without "intelligent" capabilities like cursor addressing, bolding, etc. A quick google search confirmed references consistent with my understanding. For example:

"A display monitor that has no processing capabilities. A dumb terminal is simply an output device that accepts data from the CPU. In contrast, a smart terminal is a monitor that has its own processor for special features, such as bold and blinking characters. Dumb terminals are not as fast as smart terminals, and they do not support as many display features, but they are adequate for most applications." webopedia.

This is also covered in the computer terminal article.

I'm also unfamiliar with the definition of a "smart terminal" to be a PC or a "network computer". Any type of computer is not a terminal, by definition. Therefore a smart terminal cannot be a personal or network computer.

On any Unix-like computer you can define a terminal type to be any number of "smart" terminal types, including vt100. But you also have a choice of setting it to dumb, which means the terminal has very limited capabilities.

At most, I think the usage of dumb terminal to mean any computer terminal should be a foot note.

--Serge 06:30, 12 December 2005 (UTC)

The term "Dumb Terminal" or "Dumb Device" Could also mean that it has very little access or can do very little and is therefore limited in its abilities to process jobs whereas a "intelligent Device" can do far more and sometimes far quicker. — Preceding unsigned comment added by 194.83.71.166 (talk) 12:37, 22 September 2006 (UTC)

As long as the portion of the article that this article is merged with can be found by searching WikiPedia using the phrase 'dumb terminal' it should be no problem. --mlewis000 11:11, 9 December 2006 (UTC)

以上是维基百科的说法。

计算机科学中,哑终端表示一个相对于其他种类比较“聪明”的计算机终端来说,功能较为有限的计算机终端。其具体的含义根据不同的语境(场合)而变化。

在老式的采用RS-232串行口连接的计算机终端里,哑终端指不能执行诸如“删行”(clearing a line)、“清屏”(clearing a screen)或“控制光标位置”(control cursor position)的一些特殊乱序操作(escape sequences 如 en:ANSI escape code)的计算机终端。在此意义上,哑终端还被称作透明电传打字机glass teletypes),因为它与电传打字机有着类似的有限功能。这类哑终端仍然被现代的类Unix操作系统所支持。可以将系统的环境变量TERM设置为dumbsmartintelligent是指那些能执行乱序操作(escape sequences)的终端。(This type of dumb terminal is still supported on modern Unix-like systems by setting the environment variable TERM to dumbSmart or intelligent terminals are those that have the ability to process the special escape sequences. )

在更宽的意义上,哑终端包括了所有形式的包含键盘和屏幕的计算机通信设备。包括个人电脑(personal computers)、无盘工作站(diskless workstations)、网络电脑(network computers)、瘦客户端(thin clients)和X终端(X Terminals)。

哑终端有时候也指任何类型的采用RS-232串行通信方式连接的老式计算机终端。

=====

发展史

计算机终端伴随计算机系统的集中处理模式而产生,并随着计算机技术的发展而不断发展。迄今为止,计算技术经历了大型机、中型机、小型机、微型机、个人电脑(PC机)、网络计算等发展时期,终端与计算技术发展相适应,也经历了字符哑终端、图形终端、网络终端等形态。
在老式的采用RS-232串行通信接口连接的计算机终端里,哑终端从狭义来说,指不能执行诸如“删行(clearing a line)”、“清屏(clearing a screen)”或“控制光标位置(control cursor position)”等特殊换码顺序(escape sequences)操作的计算机终端。在此意义上,哑终端也被称作透明的电传打字机(Telegraphic type-writer,即TTY),因为它与电传打字机有着类似的有限的功能。这种哑终端功能仍然被现代的类Unix操作系统所支持,比如可以将Unix系统的环境变量TERM设置为dumb、smart或intelligent来确定是否支持某些特殊的换码顺序(escape sequences)操作。
哑终端的“哑”,是因为它只能用来发送、接收和显示字符,不能在它上面运行任何程序、进行任何计算或复杂的交互操作。哑终端没有内部处理器、硬盘或软盘,只有键盘、显示器和连接到主机的通信线路(通常通过串口控制器)。所以哑终端也表述为任何类型的采用RS-232串行通信方式连接的老式计算机终端,其既不处理本地数据,也不运行用户程序,只能通过键盘输入字符、通过显示器屏幕输出字符结果的计算机终端。
在更宽的意义上,哑终端包括了所有形式的包含键盘和屏幕的计算机通信或外部设备,包括个人电脑(Personal Computers)、无盘工作站(Diskless Workstations)、网络电脑(Network Computers)、瘦客户端(Thin Clients)和X终端(X Terminals)。

=============

本章内容

  • 访问命令行

  • 通过Linux控制台终端访问CLI

  • 通过图形化终端仿真器访问CLI

  • 使用GNOME终端仿真器

  • 使用Konsole终端仿真器

  • 使用xterm终端仿真器

在Linux早期,可以用来工作的只有shell。那时,系统管理员、程序员和系统用户都端坐在Linux控制台终端前,输入shell命令,查看文本输出。如今,伴随着图形化桌面环境的应用,想在系统中找到shell提示符来输入命令都变得困难起来。本章讨论了如何进入命令行环境,带你逐步了解可能会在各种Linux发行版中碰到的终端仿真软件包。

2.1 进入命令行

在图形化桌面出现之前,与Unix系统进行交互的唯一方式就是借助由shell所提供的文本命令行界面(command line interface,CLI)。CLI只能接受文本输入,也只能显示出文本和基本的图形输出。

由于这些限制,输出设备并不需要多华丽。通常只需要一个简单的哑终端就可以使用Unix系统。所谓的哑终端无非就是利用通信电缆(一般是一条多线束的串行电缆)连接到Unix系统上的一台显示器和一个键盘。这种简单的组合可以轻松地向Unix系统中输入文本数据,并查看文本输出结果。

如你所知,如今的Linux环境相较以前已经发生了巨大变化。所有的Linux发行版都配备了某种类型的图形化桌面环境。但是,如果想输入shell命令,仍旧需要使用文本显示来访问shell的CLI。于是现在的问题就归结为一点:有时还真是不容易在Linux发行版上找到进入CLI的方法。

2.1.1 控制台终端

进入CLI的一种方法是让Linux系统退出图形化桌面模式,进入文本模式。这样在显示器上就只有一个简单的shell CLI,跟图形化桌面出现以前一样。这种模式称作Linux控制台,因为它仿真了早期的硬接线控制台终端,而且是一种同Linux系统交互的直接接口。

Linux系统启动后,它会自动创建出一些虚拟控制台。虚拟控制台是运行在Linux系统内存中的终端会话。无需在计算机上连接多个哑终端,大多数Linux发行版会启动5~6个(有时会更多)虚拟控制台,你在一台计算机的显示器和键盘上就可以访问它们。

2.1.2 图形化终端

除了虚拟化终端控制台,还可以使用Linux图形化桌面环境中的终端仿真包。终端仿真包会在一个桌面图形化窗口中模拟控制台终端的使用。图2-1展示了一个运行在Linux图形化桌面环境中的终端仿真器。

图 2-1 运行在Linux桌面上的终端仿真器

图形化终端仿真只负责Linux图形化体验的一部分。完整的体验效果需要借助多个组件来实现,其中就包括图形化终端仿真软件(称为客户端)。表2-1展示了Linux图形化桌面环境的不同组成部分。

表 2-1 图形界面的组成

名称

例子

描述

客户端

图形化终端仿真器,桌面环境,网络浏览器

请求图形化服务的应用

显示服务器

Mir,Wayland Compositor,Xserver

负责管理显示(屏幕)和输入设备(键盘、鼠标、触摸屏)

窗口管理器

Compiz,Metacity,Kwin

为窗口加入边框,提供窗口移动和管理功能

部件库

Athenal(Xaw),X Intrinsics

为桌面环境中的客户端添加菜单以及外观项

要想在桌面中使用命令行,关键在于图形化终端仿真器。可以把图形化终端仿真器看作GUI中(in the GUI)的CLI终端,将虚拟控制台终端看作GUI以外(outside the GUI)的CLI终端。理解各种终端及其特性能够提高你的命令行体验。

2.2 通过Linux控制台终端访问CLI

在Linux的早期,在启动系统时你只会在显示器上看到一个登录提示符,除此之外就没别的了。之前说过,这就是Linux控制台。它是唯一可以为系统输入命令的地方。

尽管在启动时会创建多个虚拟控制台,但很多Linux发行版在完成启动过程之后会切换到图形化环境。这为用户提供了图形化登录以及桌面体验。这样一来,就只能通过手动方式来访问虚拟控制台了。

在大多数Linux发行版中,你可以使用简单的按键组合来访问某个Linux虚拟控制台。通常必须按下Ctrl+Alt组合键,然后按功能键(F1~F7)进入要使用的虚拟控制台。功能键F1生成虚拟控制台1,F2键生成虚拟控制台2,F3键生成虚拟控制台3,F4键生成虚拟控制台4,依次类推。

说明 Linux发行版通常使用Ctrl+Alt组合键配合F1或F7来进入虚拟控制台。Ubuntu使用F7,而RHEL则使用F1。最好还是测试一下自己所使用的发行版是如何进入虚拟控制台的。

文本模式的虚拟控制台采用全屏的方式显示文本登录界面。图2-2展示了一个虚拟控制台的文本登录界面。

图 2-2 Linux虚拟控制台登录界面

注意,在图2-2中第一行文本的最后有一个词tty2。这个词中的2表明这是虚拟控制台2,可以通过Ctrl+Alt+F2组合键进入。tty代表电传打字机(teletypewriter)。这是一个古老的名词,指的是一台用于发送消息的机器。

说明 不是所有的Linux发行版都会在登录界面上显示虚拟控制台的tty号。

login:提示符后输入用户ID,然后再在Password:提示符后输入密码,就可以进入控制台终端了。如果你之前从来没有用过这种方式登录,那要注意在这里输入密码和在图形环境中输入不太一样。在图形环境中,输入密码的时候会看到点号或星号,但是在虚拟控制台中,输入密码的时候什么都不会显示。

登入虚拟控制台之后,你就进入了Linux CLI。记住,在Linux虚拟控制台中是无法运行任何图形化程序的。

一旦登录完成,你可以保持此次登录的活动状态,然后在不中断活动会话的同时切换到另一个虚拟控制台。你可以在所有虚拟控制台之间切换,拥有多个活动会话。在使用CLI时,这个特性为你提供了巨大的灵活性。

还有一些灵活性涉及虚拟控制台的外观。尽管虚拟控制台只是文本模式的控制台终端,但你可以修改文字和背景色。

比如可将终端的背景色设置成白色、文本设置成黑色,这样可让眼睛轻松些。登录之后,有好几种方法可实现这样的修改。其中一种方法是输入命令setterm -inversescreen on,然后按回车键,如图2-3所示。注意,在途中我们使用选项on启用了inversescreen特性。也可以使用选项off关闭该特性。

图 2-3 启用了inversescreen的Linux虚拟控制台

另一种方法是连着输入两条命令。输入setterm -background white,然后按回车键,接着输入setterm -foreground black,再按回车键。要注意,因为先修改的是终端的背景色,所以可能会很难看清接下来输入的命令。

在上面的命令中,你不用像inversescreen那样去启用或关闭什么特性。共有8种颜色可供选择,分别是blackredgreenyellowbluemagentacyanwhite(这种颜色在有些发行版中看起来像灰色)。你可以赋予纯文本模式的控制台终端富有创意的外观效果。表2-2展示了setterm命令的一些选项,可以用于增进控制台终端的可读性,或改善外观。

表 2-2 用于设置前景色和背景色的setterm选项

选项

参数

描述

-background

blackredgreenyellow
bluemagentacyanwhite

将终端的背景色改为指定颜色

-foreground

blackredgreenyellow
bluemagentacyanwhite

将终端的前景色改为指定颜色

-inversescreen

onoff

交换背景色和前景色

-reset

将终端外观恢复成默认设置并清屏

-store

将终端当前的前景色和背景色设置成-reset选项的值

如果不涉及GUI,虚拟控制台终端访问CLI自然是不错的选择。但有时候需要一边访问CLI,一边运行图形化程序。使用终端仿真软件包可以解决这个问题,这也是在GUI中访问shell CLI的一种流行的方式。接下来的部分将介绍能够提供图形化终端仿真的常见软件包。

2.3 通过图形化终端仿真访问CLI

相较于虚拟化控制台终端,图形化桌面环境提供了更多访问CLI的方式。在图形化环境下,有大量可用的图形化终端仿真器。每个软件包都有各自独特的特性及选项。表2-3列举出了一些流行的图形化终端仿真器软件包及其网址。

表 2-3 流行的图形化终端仿真器软件包

名称

网址

Eterm

http://www.eterm.org

Final Term

http://finalterm.org

GNOME Terminal

https://help.gnome.org/users/gnome-terminal/stable

Guake

https://github.com/Guake/guake

Konsole Terminal

http://konsole.kde.org

LillyTerm

http://lilyterm.luna.com.tw/index.html

LXTerminal

http://wiki.lxde.org/en/LXTerminal

mrxvt

https://code.google.com/p/mrxvt

ROXTerm

http://roxterm.sourceforge.net

rxvt

http://sourceforge.net/projects/rxvt

rxvt-unicode

http://software.schmorp.de/pkg/rxvt-unicode

Sakura

https://launchpad.net/sakura

st

http://st.suckless.org

Terminator

https://launchpad.net/terminator

Terminology

http://www.enlightenment.org/p.php?p=about/terminology

tilda

http://tilda.sourceforge.net/tildaabout.php

UXterm

http://manpages.ubuntu.com/manpages/gutsy/man1/uxterm.1.html

Wterm

http://sourceforge.net/projects/wterm

xterm

http://invisible-island.net/xterm

Xfce4 Terminal

http://docs.xfce.org/apps/terminal/start

Yakuake

http://extragear.kde.org/apps/yakuake

尽管可用的图形化终端仿真器软件包不少,但本章只重点关注其中常用的三个。它们分别是GNOME Terminal、Konsole Terminal和xterm,通常都会默认安装在Linux发行版中。

2.4 使用GNOME Terminal仿真器

GNOME Terminal是GNOME桌面环境的默认终端仿真器。很多发行版,如RHEL、Fedora和CentOS,默认采用的都是GNOME桌面环境,因此GNOME Terminal自然也就是默认配备了。不过其他一些桌面环境,比如Ubuntu Unity,也采用GNOME Terminal作为默认的终端仿真软件包。它使用起来非常简单,是Linux新手的不错选择。这部分将带你学习如何访问、配置和使用GNOME终端仿真器。

2.4.1 访问GNOME Terminal

每个图形化桌面环境都有不同的方式访问GNOME终端仿真器。本节讲述了如何在GNOME、Unity和KDE桌面环境中访问GNOME Terminal。

说明 如果你使用的桌面环境并没有在表2-3中列出,那你就得逐个查看桌面环境中的各种菜单来找到GNOME终端仿真器。它在菜单中通常叫作Terminal。

在GNOME桌面环境中,访问GNOME Terminal非常直截了当。找到左上角的菜单,点击Applications,从下拉菜单中选择System Tools,点击Terminal。如果写成简写法的话,这一系列操作就像这样:Applications ➪ System Tools ➪ Terminal。

图2-1就是一张GNOME Terminal的图片。它展示了在CentOS发行版的GNOME桌面环境中访问GNOME Terminal。

在Unity桌面环境中,访问GNOME终端得费点事。最简单的方法是Dash ➪ Search,然后输入Terminal。GNOME终端会作为一个名为Terminal的应用程序显示在Dash区域。点击对应的图标就可以打开GNOME终端仿真器了。

窍门 在一些Linux发行版的桌面环境中,例如Ubuntu的Unity,可以使用快捷键Ctrl+Alt+T快速访问GNOME终端。

在KDE桌面环境中,默认的仿真器是Konsole终端仿真器。必须通过菜单才能访问。找到屏幕左下角名为Kickoff Application Launcher的图标,然后依次点击Application ➪ Utilities ➪ Terminal。

在大多数桌面环境中,可以创建一个启动器(launcher)访问GNOME Terminal。启动器是桌面上的一个图标,可以利用它启动一个选定的应用程序。这是个很棒的特性,可以让你在桌面环境中快速访问终端仿真器。如果不想使用快捷键或是你的桌面环境中无法使用快捷键,这个特性就尤为有用。

例如,在GNOME桌面环境中,要创建一个启动器的话,可以在桌面中间单击右键,在出现的下拉菜单中选择Select Create Launcher...,然后会打开一个名为Create Launcher的窗口。在Type字段中选择Application。在Name字段中输入图标的名称。在Command字段中输入gnome-terminal。点击Ok,保存为新的启动器。一个带有指定名称图标的启动器就出现在了桌面上。双击就可以打开GNOME终端仿真器了。

说明 在Command字段中输入gnome-terminal时,输入的实际上是用来启动GNOME终端仿真器的shell命令。在第3章中会学到如何为gnome-terminal这类命令加入特定的命令行选项来获得特殊的配置,以及如何查看可用的选项。

在GNOME终端仿真器应用中,菜单提供了多种配置选项,应用本身也包含了很多可用的快捷键。了解这些选项能够增进GNOME Terminal CLI的使用体验。

2.4.2 菜单栏

GNOME Terminal的菜单栏包含了配置选项和定制选项,可以通过它们使你的GNOME Terminal符合自己的使用习惯。接下来的几张表格简要地描述了菜单栏中各种配置选项以及对应的快捷键。

说明 在阅读书中所描述的这些GNOME Terminal菜单选项时,要注意的是,这和你所使用的Linux发行版的GNOME Terminal的菜单选项可能会略有不同。因为一些Linux发行版采用的GNOME Terminal的版本比较旧。

表2-4展示了GNOME Terminal的File菜单下的配置选项。File菜单中包含了可用于创建和管理所有CLI终端会话的菜单项。

表 2-4 File菜单

名称

快捷键

描述

Open Terminal

Shift+Ctrl+N

在新的GNOME Terminal窗口中启动一个新的shell会话

Open Tab

Shift+Ctrl+T

在现有的GNOME Terminal窗口的新标签中启动一个新的shell会话

New Profile

定制会话并将其保存为配置文件(profile),以备随后再次使用

Save Contents

将回滚缓冲区(scrollback buffer)中的内容保存到文本文件中

Close Tab

Shift+Ctrl+W

关闭当前标签中的会话

Close Window

Shift+Ctrl+Q

关闭当前的GNOME Terminal会话

注意,和在网络浏览器中一样,你可以在GNOME Terminal会话中打开新的标签来启动一个全新的CLI会话。每个标签中的会话均被视为独立的CLI会话。

窍门 并不是非得点击菜单项才能进入File菜单中的选项。大多数选项可以通过在会话区域中点击右键找到。

表2-5所展示的Edit菜单中的菜单项用于处理标签内的文本内容。可以使用鼠标在会话窗口中的任意位置复制、粘贴文本。

表 2-5 Edit菜单

名称

快捷键

描述

Copy

Shift+Ctrl+C

将所选的文本复制到GNOME的剪贴板中

Paste

Shift+Ctrl+V

将GNOME剪贴板中的文本粘贴到会话中

Paste Filenames

粘贴已复制的文件名和对应的路径

Select All

选中回滚缓冲区中的全部输出

Profiles

添加、删除或修改GNOME Terminal的配置文件

Keyboard Shortcuts

创建快捷键来快速访问GNOME Terminal的各种特性

Profile Preferences

编辑当前会话的配置文件

Paste Filenames菜单项只有在最新版的GNOME Terminal中才能找到,因此在你的系统中可能会看不到。

表2-6所展示的View菜单中包含用于控制CLI会话窗口外观的菜单项。这些选项能够为视力有缺陷的用户带来帮助。

表 2-6 View菜单

名称

快捷键

描述

Show Menubar

打开/关闭菜单栏

Full Screen

F11

打开/关闭终端窗口全桌面显示模式

Zoom In

Ctrl++

逐步增大窗口显示字号

Zoom Out

Ctrl+-

逐步减小窗口显示字号

Normal Size

Ctrl+0

恢复默认字号

要注意的是,如果关闭了菜单栏显示,会话的菜单栏就会消失。不过你可以在任何一个终端会话窗口中点击右键,然后选择Show Menubar,轻而易举地找回菜单栏。

表2-7所展示的Search菜单中的菜单项用于在终端会话中进行简单的搜索。这些搜索类似于在网络浏览器或字处理软件中进行的操作。

表 2-7 Search菜单

名称

快捷键

描述

Find

Shift+Ctrl+F

打开Find窗口,提供待搜索文本的搜索选项

Find Next

Shift+Ctrl+H

从终端会话的当前位置开始向前搜索指定文本

Find Previous

Shift+Ctrl+G

从终端会话的当前位置开始向后搜索指定文本

表2-8所展示的Terminal菜单中的菜单项用于控制终端仿真会话的特性。这些菜单项并没有对应的快捷键。

表 2-8 Terminal菜单

名称

描述

Change Profile

切换到新的配置文件

Set Title

修改标签会话的标题

Set Character Encoding

选择用于发送和显示字符的字符集

Reset

发送终端会话重置控制码

Reset and Clear

发送终端会话重置控制码并清除终端会话显示

Window Size List

列出可用于调整当前终端窗口大小的列表

Reset选项非常有用。某天,你可能不小心让终端会话显示了一堆杂乱无章的字符和符号。这时候根本识别不出什么文本信息。这通常是因为在屏幕上显示了非文本文件。可以通过选择Reset或Reset and Clear让屏幕恢复正常。

表2-9所展示的Tabs菜单中的菜单项用于控制标签的位置以及活动标签的选择。这个菜单只有在打开多个标签会话时才会出现。

表 2-9 Tabs菜单

名称

快捷键

描述

Next Tab

Ctrl+PageDown

使下一个标签成为活动标签

Previous Tab

Ctrl+PageUp

使上一个标签成为活动标签

Move Tab Left

Shift+Ctrl+PageUp

将当前标签移动到前一个标签的前面

Move Tab Right

Shift+Ctrl+PageDown

将当前标签移动到下一个标签的后面

Detach Tab

删除该标签并使用该标签会话启动一个新的GNOME Terminal窗口

Tab List

列出当前正在运行的标签(选择一个标签,转入对应的会话)

Terminal List

列出当前正在运行的终端(选择一个终端,转入对应的会话。当打开多个窗口会话的时候才会出现该菜单项)

最后,Help菜单包含了两个菜单项。Contents提供了一份完整的GNOME Terminal手册,可供你研究GNOME Terminal的各个菜单项和特性。About菜单项可以告诉你当前运行的GNOME Terminal的版本。

除了GNOME终端仿真软件包,另一个常用的软件包是Konsole Terminal。两者在很多方面类似。不过两者间存在的差异还是让我们很有必要单独开辟一节来讲解的。

2.5 使用Konsole Terminal仿真器

KDE桌面项目拥有自己的终端仿真软件包:Konsole Terminal。Konsole软件包具备基本的终端仿真特性,另外还包含了一些更高级的图形应用程序功能。本节描述了Konsole Terminal的特性及其用法。

2.5.1 访问Konsole Terminal

Konsole Terminal是KDE桌面环境的默认终端仿真器,可以通过KDE环境的菜单系统轻而易举地访问到。在其他桌面环境中,访问Konsole Terminal就要麻烦一点了。

在KDE桌面环境中,可以通过点击屏幕左下角名为Kickoff Application Launcher的图标来访问Konsole Terminal。然后点击Applications ➪ System ➪ Terminal (Konsole)。

说明 你可能会在KDE菜单环境中看到两个终端菜单项。如果是这样的话,下方包含文字Konsole的Terminal菜单项就是Konsole终端。

在GNOME桌面环境中,通常并没有默认安装Konsole终端。如果已经安装过的话,你可以通过GNOME的菜单系统进行访问。在屏幕左上角点击Applications ➪ System Tools ➪ Konsole。

说明 你的系统中可能并没有安装Konsole终端仿真软件包。如果想安装的话,请阅读第9章来学习如何在命令行中安装软件。

如果在Unity桌面环境中安装了Konsole,可以通过Dash ➪ Search,然后输入Konsole进行访问。Konsole Terminal会作为一个名为Konsole的应用程序显示在Dash区域。点击对应的图标打开Konsole终端仿真器。

图2-4展示了在CentOS Linux发行版的KDE桌面环境中访问Konsole Terminal。

图 2-4 Konsole Terminal

记住,在大多数桌面环境中,可以创建一个启动器来访问如Konsole Terminal这样的应用程序。需要用于启动器启动Konsole终端仿真器的命令是konsole。另外,如果已经安装过Konsole Terminal的话,可以在其他的终端模拟器中输入konsole,然后按回车键来启动。

和GNOME Terminal类似,Konsole Terminal也通过菜单提供了一些配置选项和快捷键。接下来将会逐一讲述这些选项。

2.5.2 菜单栏

Konsole Terminal的菜单栏包含了查看和更改终端仿真会话特性所需的配置及定制化选项。下面的几张表格简要描述了菜单选项及其快捷键。

窍门 在活动会话区域中点击右键时,Konsole Terminal会弹出一个简单的菜单。一些菜单项可以在这个非常方便的菜单中找到。

表2-10中所展示的File菜单提供了可用于在当前窗口或新窗口中打开新标签的选项。

表 2-10 File菜单

名称

快捷键

描述

New Tab

Ctrl+Shift+N

在现有的Konsole Terminal窗口的新标签中启动一个新的shell会话

New Window

Ctrl+Shift+M

在新的Konsole Terminal窗口中启动一个新的shell会话

shell

打开采用默认配置文件的shell

Open Browser Here

打开默认的文件浏览器应用

Close Tab

Ctrl+Shift+W

关闭当前标签中的会话

Quit

Ctrl+Shift+Q

退出Konsole Terminal仿真应用

在首次启动Konsole Terminal时,菜单中唯一列出的配置文件就是shell。随着越来越多的配置文件被创建及保存,它们的名字都会出现在菜单中。

说明 在阅读书中所描述的Konsole Terminal菜单项时,要注意的是,这可能会和你使用的Linux发行版中的Konsole Terminal有所不同。因为一些Linux发行版中采用的Konsole Terminal仿真软件包的版本比较旧。

表2-11中所展示的Edit菜单提供了可用于处理会话中的文本内容的选项。除此之外,可以管理标签名称的选项也在此列。

表 2-11 Edit菜单

名称

快捷键

描述

Copy

Ctrl+Shift+C

将选择的文本复制到Konsole的剪贴板中

Paste

Ctrl+Shift+V

将Konsole剪贴板中的文本粘贴到会话中

Rename Tab

Ctrl+Alt+S

修改标签会话的标题

Copy Input To

开始/停止将会话输入复制到所选的其他会话中

Clear Display

清除终端会话中的内容

Clear & Reset

清除终端会话中的内容并发送终端会话重置控制码

Konsole有一种很好的方法来跟踪每个标签会话中正在进行的活动。你可以使用Rename Tab菜单项对标签进行命名,使其符合当前执行的任务。这可以帮助我们知道那些打开的标签究竟是干什么的。

表2-12所展示的View菜单中的菜单项用于控制Konsole Terminal窗口中单个会话的视图。除此之外,可监视终端会话活动的选项也在此列。

表 2-12 View菜单

名称

快捷键

描述

Split View

控制显示在Konsole Terminal窗口中的多个标签会话

Detach View

Ctrl+Shift+H

删除一个标签会话并使用该标签中的会话启动一个新的Konsole Terminal窗口

Show Menu Bar

打开/关闭菜单栏

Full Screen Mode

Ctrl+Shift+F11

打开/关闭终端窗口的全屏模式

Monitor for Silence

Ctrl+Shift+I

打开/关闭无活动标签(tab silence)的特殊消息

Monitor for Activity

Ctrl+Shift+A

打开/关闭活动标签(tab activity)的特殊消息

Character Encoding

选择用于发送和显示字符的字符集

Increase Text Size

Ctrl++

逐步增大窗口显示字号

Decrease Text Size

Ctrl+-

逐步减小窗口显示字号

菜单项Monitor for Silence用于指明无活动标签。如果在当前标签会话内超过10秒钟没有出现新的文本内容,那该标签就成了无活动标签。这允许你在等待应用程序输出时切换到另一个标签。

由菜单项Monitor for Activity所打开的活动标签功能会在标签会话中出现新的文本内容时发出一条消息。这一选项能让你注意到应用程序产生了新的输出。

Konsole为每个标签保存了一个叫作回滚缓冲区的历史记录。这个历史记录中包含了已经不在当前终端可视区域中的文本内容。默认的是在回滚缓冲区内保存最近的1000行文本。表2-13所展示的Scrollback菜单中的菜单项可用于查看该缓冲区。

表 2-13 Scrollback菜单

名称

快捷键

描述

Search Output

Ctrl+Shift+F

打开Konsole Terminal窗口底部的Find窗口,提供回滚文本搜索选项

Find Next

F3

在回滚缓冲区历史记录中查找下一个匹配的文本

Find Previous

Shift+F3

在回滚缓冲区历史记录中查找上一个匹配的文本

Save Output

将回滚缓冲区中的内容保存在一个文本文件或HTML文件中

Scrollback Options

打开Scrollback Options窗口来配置回滚缓冲区选项

Clear Scrollback

删除回滚缓冲区中的内容

Clear Scrollback & Reset

Ctrl+Shift+X

删除回滚缓冲区中的内容并重置终端窗口

你也可以使用窗口可视区域中的滚动条向后翻看回滚缓冲区中的内容。另外,也可以使用Shift+UpArrow逐行向后翻看,或是使用Shift+PageUp逐页(24行)向后翻看。

表2-14中所展示的Bookmarks菜单中的菜单项可用于管理Konsole Terminal窗口中的书签。书签能够保存活动会话的目录位置,让你随后可以在相同会话或新的会话中轻松返回之前的位置。

表 2-14 Bookmark菜单

名称

快捷键

描述

Add Bookmark

Ctrl+Shift+B

在当前目录位置上创建新的书签

Bookmark Tabs as Folder

为当前所有的终端标签会话创建一个新的书签

New Bookmark Folder

创建新的书签文件夹

Edit Bookmarks

编辑已有的书签

表2-15所展示的Settings菜单中的菜单项可用于定制和管理配置文件。另外,你还可以为当前的标签会话再添加些许功能。这些菜单项并没有对应的快捷键。

表 2-15 Settings菜单

名称

描述

Change Profile

将所选的配置文件应用于当前标签

Edit Current Profile

打开Edit Profile窗口,提供配置文件配置选项

Manage Profiles

打开Manage Profile窗口,提供配置文件管理选项

Configure Shortcuts

创建Konsole Terminal命令快捷键

Configure Notifications

创建定制化的Konsole Terminal方案及会话

Configure Notifications项允许将会话中发生的特定事件与不同的行为关联起来。当出现某个事件时,就会触发指定的行为(或一系列行为)。

表2-16中所展示的Help菜单中的菜单项给出了完整的Konsole手册(如果你的Linux发行版中已经安装了KDE手册)以及标准的About Konsole对话框。

表 2-16 Help菜单

名称

快捷键

描述

Konsole Handbook

包含了完整的Konsole手册

What's This?

Shift+F1

包含了终端部件的帮助信息

Report Bug

打开Submit Bug Report(提交bug报告)表单

Switch Application Language

打开Switch Application's Language(切换应用程序语言)表单

About Konsole

显示当前Konsole Terminal的版本

About KDE

显示当前KDE桌面环境的版本

有一份相当全面的文档可以帮助你使用Konsole终端仿真器软件包。除此之外,在你碰到程序故障的时候,还可以使用Bug Report表单向Konsole Terminal开发人员提交问题。

相较于另一个流行的软件包xterm,Konsole终端仿真器软件包算是年轻一代了。在下一节中,我们将探望一下“老古董”xterm。

2.6 使用xterm终端仿真器

最古老也是最基础的终端仿真软件包是xterm。xterm软件包在X Window出现之前就有了,通常默认包含在发行版中。

尽管xterm是功能完善的仿真软件包,但是它并不需要太多的资源(如内存)来运行。正因为如此,在专门为老旧硬件设计的Linux发行版中,xterm非常流行。有些图形化桌面环境就用它作为默认终端仿真器软件包。

xterm软件包尽管没有提供太多炫目的特性,但是却把一件事做到了极致:它能够仿真旧式终端,如DEC公司的VT102、VT220以及Tektronix 4014终端。对于VT102和VT220终端,xterm甚至能够仿真VT序列色彩控制码,让你可以在脚本中使用色彩。

说明 DEC VT102及VT220盛行于20世纪80年代和90年代初期,用于连接Unix系统的哑文本终端。VT102/VT220不仅能显示文本,还能够使用块模式图形显示基本的图形结构。由于在很多商业环境中这种终端访问方式仍在使用,因而使得VT102/VT220仿真依然流行。

图2-5展示了运行在图形化Linux桌面中的xterm。可以看出,它非常朴素。

图 2-5 xterm终端

如今得花点心思才能把xterm终端仿真器找出来。它常常并没有被包含在桌面环境的菜单中。

2.6.1 访问xterm

在Ubuntu的Unity桌面中,xterm是默认安装的。可以通过Dash ➪ Search,然后输入xterm进行访问。xterm会作为一个名为XTerm的应用出现在Dash区域。点击对应的图标就可以打开xterm终端仿真器。

说明 在Ubuntu中搜索xterm时,你可能会看到另一个叫作UXTerm的终端。这只不过是加入了Unicode支持的xterm仿真器软件包而已。

GNOME和KDE桌面环境中并没有默认安装xterm。你得先安装它(可以参阅第9章安装软件包)。安装完成之后,你必须从另一个终端仿真器中启动xterm。打开一个终端仿真器进入CLI,输入xterm并按回车键。记住,也可以创建桌面启动器来启动xterm。

xterm包让你可以使用命令行参数设置自己的特性。下面的内容将讨论这些特性以及如何进行修改。

2.6.2 命令行参数

xterm的命令行参数非常多。你可以控制大量的特性来对终端仿真实施定制,例如允许或禁止某种VT仿真。

说明 xterm包含数量众多的配置选项,在此无法一一列举。在bash手册中有大量的文档可供参考。第3章中会讲到如何阅读bash手册。另外,xterm开发团队也在其网站上提供了很好的帮助:http://invisible-island.net/xterm/。

可以通过向xterm命令加入参数来调用某些配置选项。例如,要想让xterm仿真DEC VT100终端,可以输入命令xterm -ti vt100,然后按回车键。表2-17给出了一些可以配合xterm终端仿真器使用的参数。

表 2-17 xterm命令行参数

参数

描述

-bg color

指定终端背景色

-fb font

指定粗体文本所使用的字体

-fg color

指定文本颜色

-fn font

指定文本字体

-fw font

指定宽文本字体

-lf filename

指定用于屏幕日志的文件名

-ms color

指定文本光标颜色

-name name

指定标题栏中的应用程序名称

-ti terminal

指定要仿真的终端类型

一些xterm命令行参数使用加号(+)或减号(-)来指明如何设置某种特性。加号表示启用某种特性,减号表示关闭某种特性。不过反过来也行。加号可以表示禁止某种特性,减号可以表示允许某种特性,例如在使用bc参数的时候。表2-18中列出了可以使用+/-命令行参数设置的一些常用特性。

表 2-18 xterm +/-命令行参数

参数

描述

ah

启用/禁止文本光标高亮

aw

启用/禁止文本行自动环绕

bc

启用/禁止文本光标闪烁

cm

启用/禁止识别ANSI色彩更改控制码

fullscreen

启用/禁止全屏模式

j

启用/禁止跳跃式滚动

l

启用/禁止将屏幕数据记录进日志文件

mb

启用/禁止边缘响铃

rv

启用/禁止图像反转

t

启用/禁止Tektronix模式

要注意,不是所有的xterm实现都支持这些命令行参数。你可以在xterm启动后,使用-help参数来确定你所使用的xterm实现支持哪些参数。

现在你已经了解了三种终端仿真器软件包,重要的问题是:哪个是最好的终端仿真器。对于这个问题,并没有权威的答案。要使用哪个仿真器软件包取决于你的个人需求。不过,能有这么多选择总是好事。

https://zh.wikipedia.org/wiki/Linux%E5%8E%86%E5%8F%B2

什么是哑终端,终端模拟器相关推荐

  1. 安卓Android系统超级终端(终端模拟…

    有一些童鞋呢经常在问终端模拟器是做啥用的,有的ROM里也集成了终端模拟器 终端,就是命令行.相当于WINDOWS下面的DOS命令行 C:>,可以做很多事情的,比如: 1. 执行刷机.重启.关机等 ...

  2. 当百度AI走进终端(终端翻译、终端机器人)

    tub tub use baidu 命令行翻译脚本^ _ ^ tub use baidu 命令行智能脚本^ _ ^ 介绍 使用百度翻译api接口,在命令行使用python脚本翻译 tub具有两种模式, ...

  3. python模拟器 截图_在Linux中20个命令行终端模拟器截图对比

    终端模拟器是在一些其它显示结构内再现视频终端的计算机程序.换句话说,终端模拟器有能力使一个愚蠢的机器看起来像一个网络连接到服务器的客户端计算机.终端模拟器允许最终用户访问控制台及其应用程序,如文本用户 ...

  4. Linux在线终端模拟器

    分享几个Linux终端在线模拟器,并简单说下试用后的感觉,读者可以合理选择并用于学习Linux命令操作. jor1k:http://s-macke.github.io/jor1k/ 基本的命令都有,还 ...

  5. linux下tty,控制台,虚拟终端,串口,console(控制台终端)详解

    首先: 1.终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念. 一台主机,连很多终端,终端为主机提供了人机接口,每个人都通过终端使用主机的资源. 终端有字符哑终端和图形终端两 ...

  6. 信创操作系统--统信UOS桌面版(使用终端:bash、tty、基本shell操作)

    信创操作系统–统信UOS桌面版(使用终端:bash.tty.基本shell操作) 目录 前言 1.bash与终端 2.使用终端与tty 2.1.使用终端 2.2.使用tty 3.基本的shell操作 ...

  7. 21款实用的Linux命令行终端工具

    本文中,介绍了14款最佳Linux命令行终端工具,可以用来替代debian系的Linux原生终端.如果你每天需要花大量的时间使用Linux命令行,而且正在寻找一些可替代系统自带的老旧且乏味的终端软件, ...

  8. kali2020.3 初步配置及修改终端颜色

    近日由于莫名原因导致我原来的2019.2的kali系统出现问题无法进入,当时快照又刚好被删除,于是重装了一个kali,并在此记录一下. 初步配置 配置源 vi /etc/apt/sources.lis ...

  9. 21款最佳Linux命令行终端工具

    本文中,介绍了14款最佳Linux命令行终端工具,可以用来替代debian系的Linux原生终端.如果你每天需要花大量的时间使用Linux命令行,而且正在寻找一些可替代系统自带的老旧且乏味的终端软件, ...

  10. 终端 伪终端 控制终端

    首先, 终端 (Terminal)概念通常是指那些与集中式主机系统(例如IBM大型计算机)相连的"哑"用户设备. 而个人计算机演变至今,让人很难理解这个概念. 1.终端和控制台都不 ...

最新文章

  1. POJ1177矩形面积并(矩形切割+括号匹配)
  2. GPU Gems1 - 26 OpenEXR图像文件格式与HDR(The OpenEXR Image File Format and HDR)
  3. Nginx + php
  4. Java多线程系列(九):CountDownLatch、Semaphore等4大并发工具类详解
  5. Qt4小技巧——QTextEdit自动滚屏
  6. java+mysql校园学校宿舍管理系统源码
  7. OpenCV精进之路(一):图像处理知识点串烧
  8. java统计计数_java – 使用LongAdder计算统计计数器的最大值?
  9. Jquery中选择器
  10. 【Python】二分法求函数零点
  11. java 解析josn数组
  12. apply update from sdcard
  13. Failed to transform file 'xxx' to match attributes 的解决办法
  14. WPS如何让表格里的文字上下居中
  15. Java后端以及web前端及echarts框架词云分析
  16. 芸芸众生中的一个过客
  17. c#调用VLC播放视频,rtsp流
  18. 现如今,CSDN排名第一?
  19. 用ASP.NET_Regsql.exe创建Session数据库
  20. 漏电继电器JOLX-GS62零序孔径Φ100

热门文章

  1. 计算机文化基础心得体会1500字,《计算机文化基础教学改革与实践》工作总结报告.docx...
  2. 与计算机相关活动主题,计算机文化节活动策划书
  3. 简述冯诺依曼计算机体系结构
  4. 利用AirPlayer空中播放PC服务器视频、音乐、图片
  5. scala语言课程设计
  6. Web编程入门 2.3 解决fakepath问题 获取本地文件真实地址
  7. win10怎么手动修改自己的IP地址
  8. python开源项目之五子棋
  9. 软件技巧:优蛋开启出现Failed to set data for错误
  10. 重点| 系统集成项目管理工程师考前50个知识点