【问题标题】:Terminal vs Console vs Shell vs Command Prompt? [closed]终端 vs 控制台 vs Shell vs 命令提示符? [关闭]
【发布时间】:2014-01-27 15:46:02
【问题描述】:

我发现自己在不知道区别的情况下互换使用这些术语。
所有这些术语之间的实际区别是什么?

【问题讨论】:

  • 命令提示符表明外壳已准备好输入另一个命令。终端是一种将控制台(或 TTY)暴露给外部世界的输入和输出的方法。控制台是一个 TTY 接口,用于与旨在通过文本进行通信的程序交换信息。
  • 嗯 - 除了微软坚持称他们的 Windows MSDOS 模拟器为“命令提示符”。 Shell 更多地用于 *NIX 世界,但可能意味着“从(应用程序)内部调用 CLI(命令行解释器)。真的是番茄/番茄 AFAICS 的问题。
  • Microsoft 还称 Windows 为稳定、安全的操作系统,因此我将其命名为一粒或三十粒盐。 (: shell 一个命令行解释器;这些术语或多或少是可以互换的。

标签: shell command-line terminal console command-prompt


【解决方案1】:

是的,这些术语有很多混淆。我会试一试,但前提是这确实是语义上的,并且这些术语在日常用语中可以互换使用:

“Shell”是用于运行其他程序的任何程序的术语。它包裹着另一个程序,因此得名。例如,Windows Explorer 是一个外壳,尽管很少有人会称它为外壳。在我使用过的所有语言和平台中,任何程序都可以是 shell。

编辑:我没有定义“终端”。它的名字来源于与用户通信的端点。具体来说,它是用于最终用户通信的打字机设备。今天,它更加通用,可以表示 伪终端(Linux 中的 pts ps -ef),它是由 GUI 管理的基于字符的会话。在 Windows 上,这将被称为“控制台窗口”。

“控制台”在 Windows 和 UNIX 上表示特定但不同的东西。在 UNIX 上,最初是 tty(TeleTYpewriter,VDU 是一种“玻璃电传打字机”),它是物理插入机器的,甚至不是通过加密狗(我回溯到 UNIX 很长一段时间)。它是发送和接收启动和关闭消息以及诸如 PANIC 之类的警报的终端。 bash 和 Korn shell 脚本都可以在没有 TTY/控制台的情况下作为伪守护程序运行。

术语“控制台”经常与更准确的“标准输入”、“标准输出”和“标准错误”(stdin、stdout、stderr,来自 C)混淆。这些有时称为流,在大多数系统上默认定向到终端。在 UNIX 上,它们是前三个文件描述符,在 Windows 上是前三个文件句柄,0、1、2 都是。程序可以将这些定向到它具有适当访问权限的任何文件系统,但通常它不会 - 它通常从其父进程继承它们(过去并非所有操作系统都这样做)。

在 Windows 上,“控制台”程序是具有控制台窗口的程序,通常被错误地称为“DOS 框”。所以,cmd.exe是控制台程序,perl.exe也是,python.exe也是(但不是pythonw.exe)。

命令提示符是由命令行解释器或CLI显示的输入邀请。按照 UNIX 的约定,它以 $ 结尾,除了 root 之外的所有用户,root 以 # 结尾。 csh 不遵循此约定并使用 %。通常,Windows CLI 上的提示以 > 结尾。在所有情况下,这些都可以由用户更改。

我相信 Windows 上 cmd.exe 的快捷方式和窗口标题带有“命令提示符”标签,因为它可以访问命令提示符。我有一本名为“Windows 命令行”的 Microsoft Press 书籍,上面写着“命令行是...通过命令外壳窗口访问的”。因此,即使是微软也混合了他们的条款。

因此,cmd.exe 是一个 shell 和一个 CLI,以及一个控制台程序。 sqlplus 是一个 CLI 但不是 shell,在 Windows 上它是一个控制台程序。 Windows 资源管理器是一个 shell,但不是 CLI 或控制台程序。 Bash 和 Korn shell 都是具有 CLI 的 shell,可以从控制台运行,但不限于此。

【讨论】:

  • 终端是插入机器的任何其他 tty/vdu。如前所述,控制台是“特殊的”,因为它是用于启动和关闭的控制台。
  • 终端呢?另外,在 Windows 中,我们可以说控制台程序与命令行程序相同吗?并且只是使用术语控制台而不将其作为“程序”的形容词是指控制台程序还是有其不同的含义?
  • @V0R73X:命令行程序是什么意思?任何程序都可以从命令行运行,控制台程序可以从 Windows Explorer 运行。
猜你喜欢
  • 1970-01-01
  • 2021-01-16
  • 2020-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-20
  • 2012-08-07
相关资源
最近更新 更多