Shell,控制台和终端之间有什么区别?


Answers:


168

在Linux的世界中,从用户在键盘的角度来看,它们看起来都一样。它们之间的交互方式有所不同。

所述外壳是实际处理的命令,并返回输出该程序。大多数外壳程序还管理前台和后台进程,命令历史记录和命令行编辑。这些功能(以及更多功能)是bash,是现代linux系统中最常见的shell的标准功能。

终端指的是运行在壳的包装程序。几十年前,这是一种物理设备,仅包含显示器和键盘。随着unix / linux系统增加了更好的多处理和窗口系统,该终端概念被抽象到了软件中。现在,您有了诸如Gnome Terminal之类的程序,该程序会在Gnome窗口环境中启动一个窗口,该窗口将运行可在其中输入命令的shell

控制台是一种特殊类型的终端。从历史上看,控制台是单个键盘和监视器,插入计算机上专用的串行控制台端口,用于与操作系统进行低级别的直接通信。现代linux系统提供虚拟控制台。这些是通过组合键(例如Alt+ F1Ctrl+ Alt+ F1功能键编号不同的控制台)来访问的,这些组合在linux操作系统的较低级别上进行处理-这意味着不需要安装和配置特殊服务即可运行。还可以使用Shell程序与控制台进行交互。


1
在终端是带键盘的显示器之前,它们是电传打字机-一种电子打字机。 zh.wikipedia.org/wiki/Teleprinter
Kevin Panko 2010年

13
控制台有时表示“物理连接到此计算机的键盘和监视器”。例如,“我从控制台登录,因为服务器没有响应网络。”
凯文·潘科

1
@Doug Harris:可以添加您正在谈论的硬件的一些图片吗?

1
当我在大学在80年代末期,我做了很多工作,DEC VT220终端- en.wikipedia.org/wiki/VT220 -这就是我所描述的物理设备的一个很好的例子。
道格·哈里斯

5
因此,如果终端机控制台在现代都是通过软件实现的,那么两者(现在)有什么区别?
加文·霍普

15

外壳程序是一个显示提示并等待您键入命令的程序。它执行它们,然后打印另一个提示。因此,就像Windows中的CMD或Unix中的Bash一样。它可以在终端或控制台上运行。

控制台最初是物理的东西,是控制面板。用计算术语来说,通常是指您在GUI启动之前或完成之后看到的显示。您有时可以切换为显示它而不是GUI。这是操作系统打印错误消息的地方。在多用户计算机上,实际上是显示器连接到计算机。只是让您感到困惑,在Windows上,它还可能意味着其中包含命令外壳的窗口,即终端。

终端最初也是硬件,用于与计算机通信。如今,它通常是指带有命令行(外壳)的窗口,该窗口可能出现在GUI窗口中,而不是出现在GUI中。


2

终端是基于文本的界面(可能是外壳程序)

控制台和外壳程序之间的区别是我尚不了解的,但是我可以告诉您终端与外壳程序有何不同。

终端是(根据维基百科)“的串行计算机接口用于在文本输入和显示。信息被呈现为所选择的预成形字符的数组”。

您可以使用终端与外壳进行交互,但是也可以使用终端与基于文本的GUI交互,有时也称为终端用户界面。例如:

  • Vim具有GUI元素,包括行号和命名选项卡
  • Nano具有GUI元素,包括命令帮助菜单
  • Tmux具有GUI元素,包括状态栏和窗格之间的分隔线
  • Minicom具有GUI元素,包括菜单和状态栏

在每种情况下,GUI元素都是用文本而不是像素“绘制”的。


我不确定它的定义是否仅基于文本。在某种程度上,某些GUI可以视为终端imo。
jiggunjer '16

2

对于初学者

有关更多详细说明,请访问:https : //askubuntu.com/a/506628/130518

  • 终端=文本输入/输出环境
  • 控制台=物理终端
  • shell =命令行解释器

在下文中,我将描述最普通的用例。

终端使用外壳。Shell可以在没有终端的情况下运行。

与日常用品有关:

  • 终端->家里的电视屏幕
  • Shell->在电视屏幕上运行的程序

另一种看待它的方式:耳朵(输入)和嘴巴(输出)是声音的终端。您的大脑是使用特定外壳(处理)解释这些声音的。

终端对我们来说是人类,因此我们可以对shell进行读写。Shell可以在不需要人工干预(例如cron作业)的后台进程中运行,因此不需要终端。

存在的终端的几个例子:

  • 命令提示符
  • 瓜克
  • 侏儒终端
  • 终结者

存在的shell的例子很少:

  • 重击
  • sh(伯恩壳)
  • PowerShell [Windows]
  • zsh(Z外壳)

我只写了这两个的正常工作方式,还有其他工作方式,但这是针对更高级的用户的。


1

换个角度思考,那就是发展。
即使您对开发没有很深的了解,您也可能知道基础知识,即:编辑程序,将其提交给编译器或构建编译应用程序的解释器。
控制台就像程序的编辑器。它可以帮助您编写代码,但实际上并没有执行任何操作:完成后,您可以将其发送给编译器。

您可以使用首选的编辑器,vim,gedit,emacs,notepad ++,Netbeans,eclise等。但最后,它们只是不同的工具:如果编写相同的程序,输出将相同。
在这个比喻中,外壳是编译器。输入到终端的命令被发送到解释它们并立即执行它们的外壳程序。
因此,尽管终端只是shell的前端,但shell包含实际语言,就像编译器一样。

显然,终端并不完全是文本编辑器,主要是因为它不产生文件,而是将文本发送到底层shell并从中获取输出。

Shell不是编译器,实际上它解释您的命令并立即执行它,而不是构建可执行文件。

即使有这么大的差异,我也会发现这个隐喻可以帮助您更好地理解这个想法。


0

确实没有太大区别。早在“外壳”是一个程序时,“终端”是该程序的前端包装,而“控制台”是与计算机(键盘/屏幕)的物理连接。

取决于所运行的操作系统,有所不同。“标准”外壳是BASH,通常可在所有版本的Linux / Unix上使用。Windows使用完全不同的外壳。

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.