Desafortunadamente, no hay garantía de que haya nada disponible.
Sin embargo, la mayoría de los sistemas tendrán GNU coreutils. Eso solo proporciona alrededor de 105 comandos. Probablemente pueda confiar en ellos a menos que sea un sistema integrado, que podría usar BusyBox en su lugar.
Probablemente también pueda confiar en bash, cron, GNU findutils, GNU grep, gzip, iproute2, iputils, man-db, module-init-tools, net-tools, passwd (passwd o shadow), procps, tar y util- Linux.
Tenga en cuenta que algunos programas pueden tener algunas diferencias entre distribuciones. Por ejemplo /usr/bin/awk
podría ser boquiabierto o mawk. /bin/sh
podría ser dash o bash en modo POSIX. En algunos sistemas más antiguos, /usr/bin/host
no tiene la misma sintaxis que la versión BIND, por lo que sería mejor usar dig.
Si está buscando algunos estándares, la base estándar de Linux define algunos programas que se encuentran comúnmente, pero no todas las distribuciones afirman cumplir con el estándar, y algunas solo lo hacen si instala un paquete de compatibilidad LSB opcional. Como ejemplo de esto, algunos sistemas que he visto no vienen con lsb_release
en una instalación predeterminada.
Además de esto, la lista de comandos estandarizados por POSIX podría ser útil.
Otro enfoque para su problema es empaquetar su secuencia de comandos utilizando las herramientas de empaquetado de cada distribución (por ejemplo, RPM para Red Hat, DEB para Debian, etc.) y declarar una dependencia de cualquier otro programa o paquete que necesite. Es un poco de trabajo, pero significa que los usuarios verán un mensaje de error más amigable, que les indicará no solo lo que falta, sino también qué paquetes deben instalar.
Más información:
- RPM - Adición de información de dependencia a un paquete
- Debian - Declaración de relaciones entre paquetes.
En sistemas Linux no integrados, generalmente puede contar con la mayoría de las utilidades GNU:
- utilidades básicas
- golpe
- findutils (al menos
find
yxargs
, no necesariamentelocate
yupdatedb
) - grep
- gzip
- sed
- alquitrán
además de la suite util-linux y la suite procps. Tenga en cuenta que /bin/sh
no siempre es bash, puede ser un caparazón con menos funciones, como uno de los múltiples tenedores de ceniza.
La base estándar de Linux define un conjunto de utilidades comunes con características que se esperan en todos los sistemas conformes. También puede esperar la mayoría de las utilidades especificadas por POSIX. Una excepción notable es pax
, que no forma parte de la instalación predeterminada de muchas distribuciones.
Si desea simplificar las cosas, solicite la instalación de un lsb_release
paquete. Muchas distribuciones tienen un paquete de este tipo que incorpora todas las dependencias requeridas por LSB.
En un sistema integrado, todas las apuestas están canceladas. Los sistemas Linux incorporados generalmente ejecutan BusyBox, pero muchas utilidades y funciones son opcionales, por lo que es muy poco lo que puede estar seguro de obtener.
Hay un conjunto de comandos en la mayoría, si no en todas, las distribuciones de Linux y, para el caso, también lo proporcionarán las distribuciones de Unix. Estos son los comandos obligatorios especificados por el estándar POSIX.
La mayoría de los comandos que cita (cd
, mkdir
, ls
, echo
, grep
, sed
, awk
, etc.) son de ella. La excepción es ping
como acertadamente comentó WhiteWinterWolf.