我想知道每个 Linux 系统中可用的标准命令有哪些。
例如,如果你有 debian/ubuntu/redhat/suse/arch/slackware 等,你总会找到类似的命令:
cd、mkdir、ls、echo、grep、sed、awk、ping 等。
我知道上面提到的一些命令是 shell 内置的,但其他命令不是,但它们仍然总是存在(根据我迄今为止的知识和经验)。
另一方面,gawk、parted、traceroute 等命令在不同的 Linux 发行版中默认不安装。
我进行了不同的网络搜索,但没有找到直接的答案。
目的是我想创建一个 shell 脚本,如果脚本中使用的命令在系统中可用,它应该进行一些健全性检查。如果没有,它应该提示用户安装所需的二进制文件。
答案1
不幸的是,不能保证任何东西都可用。
然而,大多数系统都会有GNU 核心工具。仅此一项就提供了大约 105 个命令。你可能可以依赖这些,除非它是一个嵌入式系统,它可能会使用忙碌盒反而。
您或许还可以信赖巴什,计划任务,GNU findutils,GNU grep,压缩包,ip路由2,iputils,人数据库,模块初始化工具,网络工具, 密码 (密码或者阴影),过程,柏油, 和实用程序Linux。
请注意,某些程序在发行版之间可能存在一些差异。例如/usr/bin/awk
可能是呆呆地或者莫克。 /bin/sh
可能短跑或者POSIX 模式下的 bash。在某些较旧的系统上,/usr/bin/host
与绑定版本,所以最好使用挖。
如果您正在寻找一些标准,Linux 标准库定义了一些常见程序,但并非所有发行版都声称符合该标准,有些发行版只有在安装可选的 LSB 兼容包时才会这样做。举个例子,一些系统lsb_release
我见过默认安装中没有附带的。
除此之外,POSIX 标准化命令列表可能会有帮助。
解决问题的另一种方法是使用每个发行版的打包工具(例如 Red Hat 的 RPM、Debian 的 DEB 等)打包脚本,并声明对您需要的任何其他程序或包的依赖关系。这需要一点工作量,但这意味着用户将看到更友好的错误消息,不仅告诉他们缺少什么,还告诉他们需要安装哪些包。
更多信息:
答案2
在非嵌入式 Linux 系统上,您通常可以依赖大多数 GNU 实用程序:
加上实用程序Linux套房和过程套件。请注意,这/bin/sh
并不总是 bash,它可以是功能较少的 shell,例如 的多个分支之一灰。
这Linux 标准库定义了一组通用实用程序,其中包含所有符合标准的系统所期望的功能。您还可以期待大部分POSIX 指定的实用程序。一个值得注意的例外是pax
,它不是许多发行版默认安装的一部分。
如果您想让事情变得简单,请请求安装一个lsb_release
软件包。许多发行版都有这样一个包,可以提取 LSB 所需的所有依赖项。
在嵌入式系统上,一切皆有可能。嵌入式Linux系统通常运行忙碌盒,但许多实用程序和功能都是可选的,因此您可以确定获得的东西很少。
答案3
大多数(如果不是全部)Linux 发行版都有一组命令,就此而言,Unix 发行版也会提供。这些是由POSIX标准。
您引用的大多数命令(cd
、mkdir
、ls
、echo
、grep
、sed
、awk
等)都是它的。例外的是ping
WhiteWinterWolf 正确的评论。