Diğer komutların neredeyse tamamını kapsayan Linux komutu nedir?


23

Gömülü sistemlerde çalışan Linux için, boyut sınırlamaları nedeniyle, sıradan iş istasyonlarında olduğu kadar çok komut paketleyemediğini hatırlıyorum. Yani hemen hemen tüm komutları (dahil taklit edebilir bir do-it-all komutu ls, cd, timevs.), ama adını hatırlamıyorum.

Ben sadece belirsiz bir şekilde "minibox" veya başka bir şey hatırladım, adında bir "kutu" varmış gibi görünüyor, adı ne olduğunu bilen var mı?


12
Buna meşgul kutusu denir.
MariusMatutiae

6
Yine de taklit etmez cd, bu mümkün değildir.
Monica'ya Zarar Vermeyi Durdurun

4
... ama mimik yapacaktır: @OrangeDog shvardır, cdyerleşik bir şekilde.
Ilmari Karonen

Hepsine hükmedecek !!!
Shokhet

5
Söyleyecektim emacs...
R.

Yanıtlar:


48

En popüler BusyBox olabilir , ancak aynı zamanda (Android tarafından kullanılan) araç kutusu , oyuncak kutusu ve belki başkaları da vardır.


Busybox'ın tek bir sihirli ikili olan bir yükleyici olmadığını açıklamaya değer. En azından Android için değil. Busybox, cihazda yerel olarak bulunmayan araçlar için bir yükleyicidir. Cihazda bulunan ikili dosyalara bakar ve ekler. Benim için yeni sistem / system / xbin / dizinine yerleştirildi.
Corey Ogburn,

1
@Corey emin misin? onun hakkında sayfa diyor "BusyBox tek küçük yürütülebilir içine birçok ortak UNIX yardımcı programları minik versiyonlarını birleştirir." .
RedGrittyBrick

Kesinlikle. İOS hakkında emin değilim ama Android'de BusyBox kurmanız gerekiyor. Uygulamanın kendisi, meşgul kutusunun hangi sürümünü ve bunları nereye yükleyeceğinizi seçmenizi sağlar. Mine şu anda diyor ki "BusyBox v1.22.1-Stericson yüklü. BusyBox / system / xbin'e yüklendi". Kurulu ikili dosyaların listesine bakabilir ve / system / xbin / içinde bulabilirsiniz. Bu bir kabuk değil, hepsi bir arada bir ikili değil, ikilik bir demet ve kolay bir yükleyici.
Corey Ogburn,

2
@ CoreyOgburn: Orijinal BusyBox, uygulamanın kendisidir. Android uygulaması, her ne kadar BusyBox olarak adlandırılsa da, yalnızca "gerçek" BusyBox'u yükleyen bir uygulamadır. BusyBox'un kendisi de temelde aynı; Android, iOS, BSD ya da başka bir sistemde. Sadece montajcılar farklı olabilir.
Michael Ehrenreich

3
Ve "birçok çalıştırılabilir" de doğru değil; busybox kendine bir ton sembolik bağ yaratır. Örneğin, grepmuhtemelen meşgul kutusuna bir bağlantıdır. Bunun tek istisnası, cdyerleşik bir kabuk olması gerektiği gibi olacak .
MSalters


3

BusyBox , / bin dizinlerinde dolaşmaya başladığınızda oldukça kafa karıştırıcı olabilecek oldukça yeni bir şekilde tasarlanmıştır.

Olarak MSalters belirtilen BusyBox sadece bir komuttur. Ancak bu, içindeki her "komut" için bu yürütülebilir dosya için oluşturulmuş sembolik bir bağlantıya bağlıdır. Başladığı sembolik bağlantı adını bilerek, bu komut için C işlevini çalıştırmayı bilir.

Böylece, PuppyLinux 5.2.8 Lucid / bin dizininin başlangıcına benziyor ...

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

Çoğu komutun sembolik bağlantı olduğuna dikkat edin busybox. Bu, ashçoğunlukla önyükleme işlemleri sırasında kullanılan çok minimalist kabuğu içerir . Ayrıca dağıtım yazar bağımsız komutları içerir seçti unutmayın bunzip2ve bzcatbunun yerine busybox sürümlerini kullanmak. İşaretler bunzip-BB-NOTUSEDve bzcat-BB-NOTUSEDgerçekten gerekli değiller, ancak bir sembolik bağlantının maliyeti için neler olup bittiğini belgelemeye yardımcı olurlar.

Ayrıca , bağlantının kendisi yerine sembolik bağların hedefi ( ls -lLveya ls -l --dereference) için boyutlar bildiren bir dizin listesinin , her komutun boyutuyla aynı olduğunu bildireceğini unutmayın busybox. Böylece -Lseçeneği ile aynı liste gösterir ...

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

BusyBox'un amacı, ortak bir komut dizisi için gereken bellek ve disk alanını (yani "ayak izi") en aza indirgemek için kendi içinde bir kodun yeniden kullanılmasıdır ... bir kabuk kendisi gerektirmeden.

Bash ve diğer kabukları aynı şeyi başarır. Ancak bunu yapmak için kendi komut satırı ortamlarını uygularlar. Bu amaç aynı zamanda birçok kabuk işlevsellik için çok eski sözdiziminin nedenlerinden biridir.

Şu anda Bash işlevlerinin bir kütüphanesi için bu "BusyBox tekniğini" kullanıyorum ve çeşitli temel bilgiler için sarmalayıcıları kullanmak daha kolay . --helpSeçenekler ile kolayca komutları "genişletme" ve kullanılabilir olduğunda GUI sürümlerini ateşlememe izin verdi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.