Apa perintah Linux yang merangkum hampir semua perintah lainnya?

23

Saya ingat bahwa untuk Linux yang berjalan di embedded system, karena keterbatasan ukuran, ia tidak dapat mengemas perintah sebanyak di workstation biasa. Jadi ada do-it-all perintah yang dapat meniru hampir semua perintah (termasuk ls, cd, time, dll), tapi saya tidak ingat namanya.

Saya hanya samar-samar mengingat sesuatu seperti "minibox" atau sesuatu, sepertinya memiliki "kotak" dalam namanya, apakah ada yang tahu apa namanya?

wangshuaijie
sumber
12
Ini disebut busybox.
MariusMatutiae
6
Itu tidak akan meniru cd, itu tidak mungkin.
Stop Harming Monica
4
@OrangeDog: ... tapi itu akan meniru sh, yang memiliki cdbuilt-in.
Ilmari Karonen
Yang memerintah mereka semua !!!
Shokhet
5
Doh, aku akan mengatakan emacs...
R ..

Jawaban:

48

Yang paling populer bisa BusyBox , tetapi ada juga kotak peralatan (digunakan oleh Android), kotak mainan dan mungkin yang lain.

LatinSuD
sumber
Perlu diperjelas bahwa Busybox adalah pemasang, bukan biner ajaib tunggal. Setidaknya tidak untuk Android. Busybox adalah penginstal untuk alat yang tidak asli pada perangkat. Itu terlihat pada binari yang sudah ada di perangkat dan menambahkannya. Bagi saya, ini menempatkan binari baru di / system / xbin /.
Corey Ogburn
1
@Corey Anda yakin? nya sekitar halaman mengatakan "BusyBox menggabungkan versi kecil dari banyak utilitas UNIX biasa menjadi executable kecil tunggal." .
RedGrittyBrick
Benar. Saya tidak yakin tentang iOS, tetapi di Android Anda harus menginstal BusyBox. Aplikasi itu sendiri memungkinkan Anda memilih versi busybox dan di mana menginstalnya. Tambang saya saat ini mengatakan "BusyBox v1.22.1-Stericson diinstal. BusyBox diinstal ke / system / xbin". Anda dapat melihat daftar binari yang terinstal dan menemukannya di / system / xbin /. Ini bukan shell, ini bukan biner lengkap, ini adalah kumpulan binari dan penginstal yang mudah.
Corey Ogburn
2
@CoreyOgburn: BusyBox asli adalah aplikasinya sendiri. Aplikasi Android, meskipun bernama BusyBox, hanya sebuah aplikasi yang menginstal BusyBox "asli". BusyBox sendiri pada dasarnya sama, baik itu di Android, iOS, BSD atau sistem apa pun lainnya. Hanya penginstal yang mungkin berbeda.
Michael Ehrenreich
3
Dan "banyak yang dapat dieksekusi" juga tidak benar; busybox membuat banyak tautan simbolik ke dirinya sendiri. Misalnya, grepmungkin tautan ke busybox. Satu pengecualian akan menjadi cdseperti yang harus menjadi shell built-in.
MSalters
14

Anda mungkin merujuk ke Busybox , sebuah shell “all-in-one”.

Daniel B
sumber
3

BusyBox dirancang dengan cara yang cukup baru yang bisa sangat membingungkan ketika Anda mulai mencari-cari di direktori / bin Anda.

Seperti yang ditunjukkan MSalters , BusyBox hanyalah satu yang dapat dieksekusi. Tapi itu tergantung pada tautan simbolis yang dibuat untuk dieksekusi untuk setiap "perintah" di dalamnya. Dengan mengetahui nama symlink dimulai, ia tahu untuk menjalankan fungsi C untuk perintah itu.

Dengan demikian, awal direktori PuppyLinux 5.2.8 Lucid / bin saya terlihat seperti ...

sh-4.1# ls -l
total 4889
lrwxrwxrwx 1 root root      7 2011-08-17 10:49 [ -> busybox
lrwxrwxrwx 1 root root      7 2011-08-17 10:49 [[ -> busybox
lrwxrwxrwx 1 root root      7 2011-08-17 10:49 addgroup -> busybox
lrwxrwxrwx 1 root root      7 2011-08-17 10:49 adduser -> busybox
lrwxrwxrwx 1 root root      7 2011-08-17 10:49 ash -> busybox
-rwxr-xr-x 1 root root   2844 2011-08-17 11:04 autologinroot
lrwxrwxrwx 1 root root      4 2011-08-17 10:49 awk -> gawk
lrwxrwxrwx 1 root root      7 2011-08-17 10:49 basename -> busybox
-rwxr-xr-x 1 root root 805960 2011-08-17 11:04 bash
-r-xr-xr-x 1 root root   6835 2011-01-21 01:29 bashbug
lrwxrwxrwx 1 root root      7 2011-08-17 10:49 bbconfig -> busybox
-rwxr-xr-x 1 root root  30200 2011-08-17 11:04 bunzip2
lrwxrwxrwx 1 root root      7 2011-08-17 10:49 bunzip2-BB-NOTUSED -> busybox
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 busybox
-rwxr-xr-x 1 root root  30200 2011-08-17 11:04 bzcat
lrwxrwxrwx 1 root root      7 2011-08-17 10:49 bzcat-BB-NOTUSED -> busybox

Perhatikan bahwa sebagian besar perintah adalah symlinks busybox. Ini termasuk ashshell sangat minimalis yang digunakan sebagian besar selama operasi boot. Juga perhatikan bahwa penulis distribusi memilih untuk memasukkan perintah mandiri bunzip2dan bzcatalih-alih menggunakan versi busybox. Symlink bunzip-BB-NOTUSEDdan bzcat-BB-NOTUSEDtidak benar-benar diperlukan tetapi membantu mendokumentasikan apa yang terjadi hanya untuk biaya symlink.

Perhatikan juga bahwa daftar direktori yang melaporkan ukuran untuk target symlink ( ls -lLatau ls -l --dereference) alih-alih symlink itu sendiri, akan melaporkan ukuran setiap perintah sama dengan yang ada pada busybox. Jadi daftar yang sama dengan -Lopsi menunjukkan ...

sh-4.1# ls -lL
total 60402
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 [
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 [[
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 addgroup
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 adduser
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 ash
-rwxr-xr-x 1 root root   2844 2011-08-17 11:04 autologinroot
-rwxr-xr-x 1 root root 317880 2011-08-17 11:04 awk
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 basename
-rwxr-xr-x 1 root root 805960 2011-08-17 11:04 bash
-r-xr-xr-x 1 root root   6835 2011-01-21 01:29 bashbug
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 bbconfig
-rwxr-xr-x 1 root root  30200 2011-08-17 11:04 bunzip2
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 bunzip2-BB-NOTUSED
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 busybox
-rwxr-xr-x 1 root root  30200 2011-08-17 11:04 bzcat
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 bzcat-BB-NOTUSED

Tujuan BusyBox adalah penggunaan kembali kode secara maksimal dalam dirinya sendiri untuk meminimalkan memori dan ruang disk yang diperlukan (yaitu "jejak") untuk serangkaian perintah umum ... tanpa memerlukan shell itu sendiri.

Bash dan kerang lainnya mencapai hal yang sama. Tetapi untuk melakukannya, mereka menerapkan lingkungan commandline mereka sendiri. Tujuan ini juga merupakan salah satu alasan untuk beberapa sintaksis yang sangat kuno untuk banyak fungsi shell.

Saat ini saya menggunakan "teknik BusyBox" ini untuk perpustakaan fungsi Bash dan lebih mudah menggunakan pembungkus untuk berbagai bashism . Ini membuat saya dengan mudah "memperpanjang" perintah dengan --helpopsi dan mematikan versi GUI saat tersedia.

DocSalvager
sumber