Saya ingin tahu mana perintah standar yang tersedia di setiap sistem Linux.
Sebagai contoh jika Anda mendapatkan debian / ubuntu / redhat / suse / arch / slackware dll, Anda akan selalu menemukan perintah di sana seperti:
cd, mkdir, ls, echo, grep, sed, awk, ping dll.
Saya tahu bahwa beberapa perintah yang disebutkan adalah shell-builtin tetapi yang lain tidak tetapi mereka masih selalu ada (berdasarkan pengetahuan dan pengalaman saya sejauh ini).
Di sisi lain perintah seperti gawk, parted, traceroute dan perintah lain yang cukup terkenal tidak diinstal secara default di distribusi Linux yang berbeda.
Saya melakukan pencarian web yang berbeda tetapi saya belum menemukan jawaban langsung untuk ini.
Tujuannya adalah bahwa saya ingin membuat skrip shell dan harus membuat beberapa pemeriksaan kewarasan jika perintah yang digunakan dalam skrip tersedia di sistem. Jika tidak, itu akan meminta pengguna untuk menginstal binari yang dibutuhkan.
Jawaban:
Sayangnya tidak ada jaminan apa pun tersedia.
Namun, sebagian besar sistem akan memiliki GNU coreutils . Itu saja menyediakan sekitar 105 perintah. Anda mungkin bisa mengandalkan itu kecuali itu sistem yang disematkan, yang mungkin menggunakan BusyBox sebagai gantinya.
Anda mungkin juga bisa mengandalkan bash , cron , GNU findutils , GNU grep , gzip , iproute2 , iputils , man-db , module-init-tools , net-tools , passwd ( passwd atau shadow ), procps , tar , dan util linux .
Perhatikan bahwa beberapa program mungkin memiliki beberapa perbedaan di antara distribusi. Misalnya
/usr/bin/awk
mungkin gawk atau mawk ./bin/sh
mungkin dash atau bash dalam mode POSIX . Pada beberapa sistem yang lebih lama,/usr/bin/host
tidak memiliki sintaks yang sama dengan versi BIND , jadi mungkin lebih baik menggunakan dig .Jika Anda mencari beberapa standar, Linux Standard Base mendefinisikan beberapa program yang biasa ditemukan , tetapi tidak semua distribusi mengklaim sesuai dengan standar, dan beberapa hanya melakukannya jika Anda menginstal paket kompatibilitas LSB opsional. Sebagai contohnya, beberapa sistem yang saya lihat tidak datang dengan
lsb_release
instalasi default.Selain itu, daftar perintah yang distandarisasi oleh POSIX dapat membantu.
Pendekatan lain untuk masalah Anda adalah mengemas skrip Anda menggunakan alat pengemasan masing-masing distribusi (misalnya RPM untuk Red Hat, DEB untuk Debian, dll.) Dan mendeklarasikan ketergantungan pada program atau paket lain yang Anda butuhkan. Ini sedikit bekerja, tetapi itu berarti pengguna akan melihat pesan kesalahan yang ramah, memberi tahu mereka tidak hanya apa yang hilang, tetapi paket apa yang perlu mereka instal.
Info lebih lanjut:
sumber
:)
Pada sistem Linux yang tidak tertanam, Anda umumnya dapat mengandalkan sebagian besar utilitas GNU:
find
danxargs
, tidak haruslocate
danupdatedb
)ditambah suite util-linux dan suite procps . Catatan yang
/bin/sh
tidak selalu bash, itu bisa menjadi shell dengan fitur yang kurang seperti salah satu dari beberapa garpu abu .The Linux Standard Base mendefinisikan satu set utilitas umum dengan fitur yang diharapkan pada semua sistem sesuai. Anda juga dapat mengharapkan sebagian besar utilitas yang ditentukan oleh POSIX . Pengecualian penting adalah
pax
, yang bukan merupakan bagian dari instalasi default dari banyak distribusi.Jika Anda ingin membuat hal-hal sederhana, minta instalasi
lsb_release
paket. Banyak distribusi memiliki paket yang menarik semua dependensi yang dibutuhkan oleh LSB.Pada sistem tertanam, semua taruhan dimatikan. Sistem Linux tertanam biasanya menjalankan BusyBox , tetapi banyak utilitas dan fitur opsional, jadi sangat sedikit yang bisa Anda yakini.
sumber
Ada seperangkat perintah paling jika tidak semua distribusi Linux, dan dalam hal ini, juga distribusi Unix akan menyediakan. Ini adalah perintah wajib yang ditentukan oleh standar POSIX .
Sebagian besar perintah Anda mengutip (
cd
,mkdir
,ls
,echo
,grep
,sed
,awk
, dll) itu. Pengecualian adalahping
karena WhiteWinterWolf berkomentar dengan benar.sumber
ping
bukan bagian dari POSIX ...ping
,ifconfig
,telnet
, dll bukan bagian dari standar ini (atau salah satu lainnya AFAIK, mereka hanya bertujuan kompatibilitas dengan "implementasi historis" atas dasar upaya terbaik).