Bohužel neexistuje žádná záruka, že bude cokoli dostupné.
Většina systémů však bude mít GNU coreutils. To samo o sobě poskytuje asi 105 příkazů. Pravděpodobně se na ně můžete spolehnout, pokud se nejedná o vestavěný systém, který by místo toho mohl používat BusyBox.
Pravděpodobně se také můžete spolehnout na bash, cron, GNU findutils, GNU grep, gzip, iproute2, iputils, man-db, module-init-tools, net-tools, passwd (passwd nebo shadow), procps, tar a util- linux.
Všimněte si, že některé programy mohou mít určité rozdíly mezi distribucemi. Například /usr/bin/awk
může být čurat nebo čurat. /bin/sh
může být pomlčka nebo bash v režimu POSIX. Na některých starších systémech /usr/bin/host
nemá stejnou syntaxi jako verze BIND, takže může být lepší použít dig.
Pokud hledáte nějaké standardy, Linux Standard Base definuje některé běžně používané programy, ale ne všechny distribuce prohlašují, že jsou v souladu se standardem, a některé tak činí, pouze pokud si nainstalujete volitelný balíček kompatibility LSB. Jako příklad lze uvést, že některé systémy, které jsem viděl, neobsahují lsb_release
ve výchozí instalaci.
Kromě toho by mohl být užitečný seznam příkazů standardizovaných POSIXem.
Dalším přístupem k vašemu problému je zabalit skript pomocí balících nástrojů každé distribuce (např. RPM pro Red Hat, DEB pro Debian atd.) a deklarovat závislost na jakýchkoli jiných programech nebo balíčcích, které potřebujete. Je to trochu práce, ale znamená to, že uživatelé uvidí přívětivější chybovou zprávu, která jim nejen řekne, co chybí, ale také jaké balíčky je třeba nainstalovat.
Více informací:
- RPM – Přidání informací o závislosti do balíčku
- Debian – deklarování vztahů mezi balíčky.
Na neembedded systémech Linux můžete obecně počítat s většinou GNU utilit:
- coreutils
- bash
- findutils (nejméně
find
axargs
, ne nutnělocate
aupdatedb
) - grep
- gzip
- sed
- deht
plus sada util-linux a sada procps. Všimněte si, že /bin/sh
není vždy bash, může to být skořepina s menšími vlastnostmi, jako je jedna z několika vidliček popela.
Linux Standard Base definuje sadu běžných utilit s funkcemi, které se očekávají na všech vyhovujících systémech. Můžete také očekávat většinu utilit specifikovaných POSIXem. Pozoruhodnou výjimkou je pax
, která není součástí výchozí instalace mnoha distribucí.
Pokud chcete mít věci jednoduché, požádejte o instalaci lsb_release
balík. Mnoho distribucí má takový balíček, který stahuje všechny závislosti požadované LSB.
Na vestavěném systému jsou všechny sázky vypnuté. Vestavěné systémy Linux obvykle používají BusyBox, ale mnoho nástrojů a funkcí je volitelných, takže si můžete být jisti, že získáte jen velmi málo.
Existuje sada příkazů pro většinu, ne-li všechny distribuce Linuxu, a v tomto případě je poskytnou také distribuce Unix. Toto jsou povinné příkazy specifikované standardem POSIX.
Většina příkazů, které citujete (cd
, mkdir
, ls
, echo
, grep
, sed
, awk
atd.) jsou z toho. Výjimkou je ping
jak správně poznamenal WhiteWinterWolf.