它们是命令还是实用程序?

它们是命令还是实用程序?

我正在尝试找出 Unix/Linux“命令”的正确术语。具体来说,我一直明白,从技术上来说命令(例如,cd)内置于 shell 中,其他“命令”(例如,rm, ls, mkdir, cp, mv)更好地称为公用事业,因为它们是独立的程序。 (据我所知,rm等都在 中/bin。)此外,判断某个东西是否是命令的一种方法是查看它是否有手册页:命令没有,但实用程序有。然而,我通过谷歌找到的所有来源都专门使用“命令”。有人可以直接告诉我这个问题或者给我指出合适的参考资料吗?

由于exit没有手册页并且不在 中/bin,所以它是cd一个真正的命令吗?

答案1

开放组基本规格(POSIX) 将实用程序定义为:

一种程序,不包括作为 Shell 命令语言的一部分提供的特殊内置实用程序,可以从 shell 中按名称调用该程序来执行特定任务或相关任务集。

这部分特殊的内置实用程序然后列出内置实用程序。

命令是定义的作为:

指示 shell 执行特定任务的指令。

在本节中外壳命令,它们被分为五类之一:简单命令、管道、列表复合、复合命令和函数定义。

因此,“命令”不同于上述意义上的“实用程序”(外部程序)或内置程序。实用程序或内置函数的调用可以只是命令的一部分。

答案2

命令是当您在命令提示符下键入命令时运行的东西。有些内置于外壳中,有些是外部收藏品,有些两者兼而有之。其技术术语是“内置”和“外部”。没有“true”命令与 false 命令之分(但有些命令可以返回 true 或 false)。

“utility”在unix中没有特定的技术含义,并且不区分任何特殊的东西。

答案3

命令与实用程序的争论可以追溯到 DOS (Microsoft) 时代。在 DOS 之前,大多数“命令”都是在终端输入的,或者位于所谓的“监视器”(键盘 I/O)中。程序和实用程序是通过打孔卡、盒式磁带或磁盘等介质加载的东西。

Unix/Linux/VMS/CPM 的做事方式是提供大量的命令,这些命令可以很好地完成一项狭窄的工作。从一开始,IBM 和微软就以瑞士军刀的方式支持台式计算机,即拥有多用途的“实用程序”。

没有真正或官方的区别,但“实用程序”通常被称为通用程序,而“命令”则指狭义目的程序。

例如磁盘驱动器由于其多用途作用,通常被称为“磁盘实用程序”,并且格式由于其用途狭窄,通常被视为命令。 (但我可以向您展示人们偶尔会说 FORMAT 实用程序的地方!)

新程序员很快就能很快学会传统的名称——尽管不可否认,它是相当随意的。

相关内容