Apa saja perintah standar yang tersedia di setiap distribusi berbasis Linux?

39

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.

Vangelis Tasoulas
sumber
5
Hanya sebuah petunjuk: " itu harus membuat beberapa pemeriksaan kewarasan jika perintah yang digunakan dalam skrip tersedia di sistem " terdengar sangat mirip Autoconf .
sr_
Jelas merupakan kasus untuk konfigurasi otomatis ... atau mungkin sepupunya yang lebih ilmiah, teori janji .
Wildcard
@Wildcard, saya percaya bahwa setiap sistem manajemen konfigurasi akan menjadi kerja keras untuk kasus seperti itu, kecuali Anda ingin pemeriksaan kewarasan terus menerus dan penyembuhan diri dari sistem bahkan setelah instalasi awal.
Vangelis Tasoulas
@VangelisTasoulas, saya kira tidak. Dalam pengaturan satu pengguna seperti komputer di rumah, mengapa Anda perlu skrip itu? Manajemen konfigurasi akan berlebihan — tetapi demikian juga dengan skrip cek vs manual. Dalam skenario di mana Anda memiliki beberapa kotak tempat Anda ingin memastikan konsistensi, skrip tidak akan berlebihan — tetapi juga tidak akan mengonfigurasi manajemen. Atau apakah Anda seorang pengembang perangkat lunak yang hanya ingin menjalankan pemeriksaan kewarasan selama instalasi paket untuk produk Anda? Itu tergantung pada skenario Anda, ya, tetapi jika Anda ingin mengelola konfigurasi Anda, alat manajemen konfigurasi tidak berlebihan. ;)
Wildcard
1
@ Kartu Memori, Ketika saya menulis pertanyaan ini, saya memikirkan yang terakhir: Hanya ingin menjalankan pemeriksaan kewarasan selama instalasi dalam satu mesin, untuk memastikan bahwa perangkat lunak akan berjalan dengan baik. Tentu saja, jika Anda ingin mengelola beberapa server dan menangani penyebaran terdistribusi dll, maka saya setuju bahwa manajemen konfigurasi adalah cara untuk pergi dalam jangka panjang.
Vangelis Tasoulas

Jawaban:

41

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/awkmungkin gawk atau mawk . /bin/shmungkin dash atau bash dalam mode POSIX . Pada beberapa sistem yang lebih lama, /usr/bin/hosttidak 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_releaseinstalasi 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:

Mikel
sumber
The paket-dan-add-dependensi -idea besar, mengalahkan menyelam ke tangan autoconf bawah:)
sr_
2
jawaban yang bagus, saya setuju dengan semuanya. saya akan menambahkan langkah kehati-hatian ekstra: memperhitungkan opsi-opsi ekstra spesifik dari versi tertentu dari perintah yang Anda gunakan ... mereka mungkin tidak bekerja pada semua versi (ini telah terjadi dalam proyek tempat saya bekerja).
JoséNunoFerreira
Saya tidak mengira ada file plaintext dengan daftar perintah ini di mana saja? pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html relatif dapat dengan mudah dikonversi menjadi itu tetapi masih kehilangan banyak barang.
Dylan Nicholson
7

Pada sistem Linux yang tidak tertanam, Anda umumnya dapat mengandalkan sebagian besar utilitas GNU:

ditambah suite util-linux dan suite procps . Catatan yang /bin/shtidak 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_releasepaket. 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.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
6

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 adalah pingkarena WhiteWinterWolf berkomentar dengan benar.

Jlliagre
sumber
1
Sebenarnya pingbukan bagian dari POSIX ...
WhiteWinterWolf
Halaman depan POSIX menyatakan bahwa mereka fokus untuk memastikan "portabilitas aplikasi pada level kode sumber" , yaitu. sesuai pemahaman saya, mereka tertarik dengan sistem API, perilaku dan perintah sistem (termasuk shell) yang dapat digunakan untuk mengonfigurasi, menyusun dan menginstal aplikasi dan menangani kode sumbernya.
WhiteWinterWolf
Mereka tidak peduli tentang utilitas jaringan ( "Sistem konfigurasi dan ketersediaan sumber daya" yang secara eksplisit out-of-lingkup), perintah sehingga di mana-mana seperti 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).
WhiteWinterWolf