我使用术语 CLI 来描述诸如ls
.在更新有用命令列表时,我对一件事感到好奇。mysql
例如,我们如何调用类似 shell 的程序? CLI 不是代表Command Line Interface
或 吗Command Line Interpretor
?对于类似 shell 的程序使用这个术语不是更符合逻辑吗?经过一番研究,我更加困惑了。有些网站使用 CLI 术语来描述命令,有些网站使用 shell 术语,有些网站同时使用两者,有些网站在Command Line Interface
和之间进行了区分Command Line Interpretor
,有些网站甚至更令人困惑。
所以呢确切地是 CLI?描述类 shell 程序的术语是什么?还有命令程序?为什么确切的定义如此模糊?为什么不是每个人都同意这一点?
答案1
A命令行界面 (CLI)以文本行的形式处理计算机程序的命令。处理接口的程序称为命令行解释器或者命令行处理器。
术语 CLI 是用来反对GUI(图形用户界面)它表示用户通过点击界面、图标、窗口和其他图形组件与系统交互的方式。
这两个术语的范围都非常广泛。举个例子,在 Linux/UNIX 世界中,shell(sh、bash、zsh 等)是 CLI,而 X Windows 环境(GNOME、KDE 等)是 GUI。 Git 可以通过 CLI(git
命令)和一个图形用户界面客户端。
为了回答您的问题,术语 CLI 可用于描述在终端以及 shell 上键入的命令。如前所述,这是一个广泛的术语。
答案2
我认为没有“精确的“ 定义。
通常在程序文档中,CLI 用于描述命令行界面的部分,因此您可以获得有关参数和选项的帮助。
但这与外壳无关。您也可以在程序或配置文件中使用 CLI 界面,例如您在 git 中获取pre-hook
并在其他配置中等。post-hook
run
否则,我们倾向于使用“终端”(或虚拟终端)或“控制台”作为界面键盘和(通常是黑色)屏幕。但这并不意味着有壳。
还有 shell,如果我想强调 shell(通常在终端中运行)。 Shell 是一个调用其他程序的程序(通常用提示符显示它,并且通常带有一些用于重定向和作业控制的语法,以及编辑实际的命令行)。
以上是我的解释,它似乎是最常用的一种(尤其是在较旧的程序上),但正如您已经发现的那样,用法并不一致。
答案3
CLI 是一个历史概念。
在 70 年代和 80 年代,CLI 无处不在。它只是描述一个与命令交互的界面。
shell、bash 或 zhs 是 CLI 的子集,CLI 是一个更通用的术语。
大多数路由器都附带一个 CLI,但它们都不是,并且有大量程序都有自己的 CLI。
因此 CLI 是一个通用术语,shell 是所有现有 CLI 的子集。