Chciałbym wiedzieć, jakie są standardowe polecenia dostępne w każdym systemie Linux.
Na przykład, jeśli otrzymasz debian / ubuntu / redhat / suse / arch / slackware itp., Zawsze znajdziesz tam takie polecenia, jak:
cd, mkdir, ls, echo, grep, sed, awk, ping itp.
Wiem, że niektóre z wymienionych poleceń są wbudowane w powłokę, ale innych nie ma, ale wciąż są dostępne (na podstawie mojej dotychczasowej wiedzy i doświadczenia).
Z drugiej strony polecenia takie jak gawk, parted, traceroute i inne dość znane polecenia nie są domyślnie instalowane w różnych dystrybucjach Linuksa.
Przeprowadziłem różne wyszukiwania w sieci, ale nie znalazłem prostej odpowiedzi na to pytanie.
Chodzi o to, że chciałbym utworzyć skrypt powłoki i powinien on dokonać pewnych sprawdzeń poprawności, czy polecenia użyte w skrypcie są dostępne w systemie. Jeśli nie, powinien poprosić użytkownika o zainstalowanie potrzebnych plików binarnych.
Odpowiedzi:
Niestety nie ma gwarancji, że coś będzie dostępne.
Jednak większość systemów będzie miała jądra GNU . Samo to zapewnia około 105 poleceń. Prawdopodobnie możesz na nich polegać, chyba że jest to system osadzony, który zamiast tego może użyć BusyBox .
Prawdopodobnie możesz również polegać na bash , cron , GNU findutils , GNU grep , gzip , iproute2 , iputils , man-db , module-init-tools , net-tools , passwd ( passwd lub shadow ), procps , tar i util- linux .
Pamiętaj, że niektóre programy mogą mieć pewne różnice między dystrybucjami. Na przykład
/usr/bin/awk
może to być gawk lub mawk ./bin/sh
może być myślnikiem lub bashem w trybie POSIX . W niektórych starszych systemach/usr/bin/host
nie ma takiej samej składni jak wersja BIND , więc może być lepiej użyć dig .Jeśli szukasz niektórych standardów, Linux Standard Base definiuje niektóre powszechnie wyszukiwane programy , ale nie wszystkie dystrybucje twierdzą, że są zgodne ze standardem, a niektóre robią to tylko, jeśli zainstalujesz opcjonalny pakiet kompatybilności LSB. Jako przykład tego, niektóre systemy , które widziałem, nie mają
lsb_release
domyślnej instalacji.Oprócz tego pomocna może być lista poleceń standaryzowanych przez POSIX .
Innym podejściem do problemu jest spakowanie skryptu za pomocą narzędzi do pakowania każdej dystrybucji (np. RPM dla Red Hat, DEB dla Debiana itp.) I zadeklarowanie zależności od wszelkich innych programów lub pakietów, których potrzebujesz. To trochę pracy, ale oznacza to, że użytkownicy zobaczą bardziej przyjazny komunikat o błędzie, informujący nie tylko o tym, czego brakuje, ale o tym, jakie pakiety muszą zainstalować.
Więcej informacji:
źródło
:)
W niewbudowanych systemach Linux ogólnie można liczyć na większość narzędzi GNU:
find
ixargs
niekoniecznielocate
iupdatedb
)plus pakiet util-linux i pakiet procps . Pamiętaj, że
/bin/sh
nie zawsze jest to bash, może to być pocisk z mniejszą liczbą funkcji, takich jak jeden z wielu widelców popiołu .Linux Standard Base definiuje zestaw wspólnych narzędzi z funkcjami, które są oczekiwane na wszystkich systemach zgodnych. Możesz także oczekiwać większości narzędzi określonych przez POSIX . Godnym uwagi wyjątkiem jest sytuacja
pax
, która nie jest częścią domyślnej instalacji wielu dystrybucji.Jeśli chcesz uprościć sprawę, poproś o instalację
lsb_release
pakietu. Wiele dystrybucji ma taki pakiet, który pobiera wszystkie zależności wymagane przez LSB.W systemie wbudowanym wszystkie zakłady są wyłączone. Wbudowane systemy Linux zwykle obsługują BusyBox , ale wiele narzędzi i funkcji jest opcjonalnych, więc nie ma pewności, że je zdobędziesz.
źródło
Istnieje zestaw komend, jeśli nie wszystkie dystrybucje Linuksa, i jeśli o to chodzi, zapewnią także dystrybucje Unix. Są to obowiązkowe polecenia określone w standardzie POSIX .
Większość poleceń zacytowanie (
cd
,mkdir
,ls
,echo
,grep
,sed
,awk
, itd.) Są z niego. Wyjątkiem jest to,ping
co słusznie skomentował WhiteWinterWolf.źródło
ping
nie jest częścią POSIX ...ping
,ifconfig
,telnet
, itd. Nie są częścią tego standardu (ani żaden inny jeden AFAIK, po prostu dążyć do zgodności z „historycznymi implementacjami” na zasadzie najlepszych starań).