每个基于 Linux 的发行版中都有哪些可用的标准命令?

Van*_*las 45 linux shell standard shell-script command

我想知道每个 Linux 系统中都有哪些标准命令。

例如,如果你有一个 debian/ubuntu/redhat/suse/arch/slackware 等,你总会找到类似的命令:

cd、mkdir、ls、echo、grep、sed、awk、ping 等。

我知道提到的一些命令是 shell 内置的,但其他命令不是,但它们仍然存在(根据我目前的知识和经验)。

另一方面,像 gawk、parted、traceroute 和其他非常著名的命令等命令在不同的 Linux 发行版中没有默认安装。

我进行了不同的网络搜索,但我还没有找到直接的答案。

目的是我想创建一个 shell 脚本,如果脚本中使用的命令在系统中可用,它应该进行一些完整性检查。如果没有,它应该提示用户安装所需的二进制文件。

Mik*_*kel 48

不幸的是,不能保证任何东西都可用。

但是,大多数系统都会有GNU coreutils。仅此一项就提供了大约 105 个命令。除非它是嵌入式系统,否则您可能可以依赖它们,而嵌入式系统可能会使用BusyBox

你可能还靠的bashcron的GNU的findutilsGNU的grepgzip的iproute2的的iputils男人-DB模块初始化工具网络工具,passwd文件(passwd中影子),procps的焦油util- linux

请注意,某些程序可能在发行版之间存在一些差异。例如/usr/bin/awk可能是gawkmawk在 POSIX 模式下/bin/sh可能是dashbash。在一些较旧的系统上,/usr/bin/host它的语法与BIND 版本不同,因此最好使用dig

如果您正在寻找一些标准,Linux Standard Base 定义了一些常见的程序,但并非所有发行版都声称符合该标准,有些只有在您安装了可选的 LSB 兼容包时才会这样做。举个例子,我见过的一些系统没有lsb_release默认安装。

除了这一点,通过POSIX标准的命令列表可能会有所帮助。

解决您的问题的另一种方法是使用每个发行版的打包工具(例如,Red Hat 的 RPM、Debian 的 DEB 等)打包您的脚本,并声明对您需要的任何其他程序或包的依赖。这需要一些工作,但这意味着用户将看到更友好的错误消息,不仅告诉他们缺少什么,还告诉他们需要安装哪些软件包。

更多信息:

  • 很好的答案,我同意一切。我要添加一个额外的谨慎步骤:考虑到您正在使用的特定版本命令的额外特定选项......它们可能不适用于所有版本(这发生在我参与的项目中)。 (2认同)

Gil*_*il' 8

在非嵌入式 Linux 系统上,您通常可以依靠大多数 GNU 实用程序:

加上util-linux套件和procps 套件。请注意,/bin/sh它并不总是 bash,它可以是具有较少功能的外壳,例如ash的多个分支之一。

Linux标准库定义了预期上的所有符合系统,其特点是一套通用工具。您还可以期待POSIX 指定的大多数实用程序。一个值得注意的例外是pax,它不是许多发行版的默认安装的一部分。

如果您想保持简单,请请求安装lsb_release软件包。许多发行版都有这样一个包,可以拉入 LSB 所需的所有依赖项。

在嵌入式系统上,一切皆有可能。嵌入式 Linux 系统通常运行BusyBox,但许多实用程序和功能是可选的,因此您可以确定获得的东西很少。


jll*_*gre 6

大多数 Linux 发行版都有一组命令,就此而言,Unix 发行版也将提供。这些是POSIX 标准规定的强制命令。

大多数你举的命令(cdmkdirlsechogrepsedawk,等)都是它。例外是pingWhiteWinterWolf 正确评论。