คำสั่ง Linux ที่ห่อหุ้มคำสั่งอื่นเกือบทั้งหมดคืออะไร?


23

ฉันจำได้ว่าสำหรับ Linux ที่ทำงานในระบบฝังตัวเนื่องจากมีข้อ จำกัด ด้านขนาดจึงไม่สามารถแพ็คคำสั่งได้มากเท่ากับเวิร์กสเตชันธรรมดา จึงมีไม่มันทั้งหมดคำสั่งที่สามารถเลียนแบบคำสั่งเกือบทั้งหมด (รวมทั้งls, cd, timeฯลฯ ) แต่ผมจำไม่ได้ว่าชื่อของมัน

ฉันเพิ่งจำบางสิ่งบางอย่างเช่น "minibox" หรืออะไรบางอย่างดูเหมือนว่ามี "กล่อง" อยู่ในชื่อไม่มีใครรู้ว่าชื่อของมันคืออะไร?


12
มันเรียกว่า busybox
MariusMatutiae

6
มันจะไม่เลียนแบบcdแม้ว่าจะเป็นไปไม่ได้
หยุดทำร้ายโมนิก้า

4
@OrangeDog: ... แต่มันจะเลียนแบบshซึ่งมีcdในตัว
Ilmari Karonen

คนที่จะปกครองพวกเขาทั้งหมด !!!
Shokhet

5
D'oh ฉันจะบอกว่าemacs...
อา.

คำตอบ:


48

ความนิยมสูงสุดอาจเป็นBusyBoxแต่ก็มีกล่องเครื่องมือ (ใช้โดย Android) กล่องของเล่นและอื่น ๆ


มันคุ้มค่าที่จะอธิบายว่า Busybox เป็นตัวติดตั้งไม่ใช่ไบนารีเวทมนต์เดียว อย่างน้อยไม่ใช่สำหรับ Android Busybox เป็นเครื่องมือติดตั้งสำหรับเครื่องมือที่ไม่ได้อยู่ในอุปกรณ์ มันจะดูที่ไบนารี่บนอุปกรณ์และเพิ่มเข้าไปแล้ว สำหรับฉันมันวางไบนารีใหม่ใน / system / xbin /
Corey Ogburn

1
@Corey คุณแน่ใจหรือไม่ หน้าเกี่ยวกับมันบอกว่า"BusyBox ได้รวมยูทิลิตี้ UNIX รุ่นเล็ก ๆ หลาย ๆ ตัวไว้ในโปรแกรมขนาดเล็กเพียงตัวเดียว" .
RedGrittyBrick

อย่างแน่นอน ฉันไม่แน่ใจเกี่ยวกับ iOS แต่ใน Android คุณต้องติดตั้ง BusyBox แอพนี้ให้คุณเลือกเวอร์ชันของ busybox และตำแหน่งที่จะติดตั้ง Mine กำลังพูดว่า "BusyBox v1.22.1-Stericson ได้รับการติดตั้งแล้ว BusyBox นั้นถูกติดตั้งไว้ที่ / system / xbin" คุณสามารถดูรายการของไบนารีที่ติดตั้งและค้นหาได้ใน / system / xbin / ไม่ใช่เปลือกไม่ใช่ไบนารีทั้งหมดรวมเป็นไบนารีและติดตั้งง่าย
Corey Ogburn

2
@CoreyOgburn: BusyBox เดิมเป็นแอปพลิเคชัน แอป Android แม้ชื่อ BusyBox เป็นเพียงแอพที่ติดตั้ง BusyBox "ของจริง" BusyBox นั้นมีพื้นฐานเหมือนกันไม่ว่าจะเป็นบน Android, iOS, BSD หรือระบบอื่นใด เฉพาะโปรแกรมติดตั้งเท่านั้นที่อาจแตกต่างกัน
Michael Ehrenreich

3
และ "executables จำนวนมาก" ก็ไม่เป็นความจริงเช่นกัน busybox สร้างลิงค์สัญลักษณ์มากมาย เช่นgrepอาจเป็นลิงก์ไปยัง busybox ข้อยกเว้นเดียวจะเป็นcdเช่นนั้นจะต้องเป็นเชลล์ในตัว
MSalters


3

BusyBoxได้รับการออกแบบในลักษณะแปลกใหม่ที่ค่อนข้างสับสนเมื่อคุณเริ่มค้นหาในไดเรกทอรี bin ของคุณ

ตามที่MSaltersระบุไว้ BusyBox เป็นเพียงหนึ่งไฟล์ที่ปฏิบัติการได้ แต่มันก็ขึ้นอยู่กับลิงค์สัญลักษณ์ที่ถูกสร้างขึ้นเพื่อปฏิบัติการนั้นสำหรับทุกคำสั่ง "" ในนั้น เมื่อทราบชื่อ symlink ที่เริ่มต้นแล้วจะรู้ว่าเรียกใช้ฟังก์ชัน C สำหรับคำสั่งนั้น

ดังนั้นจุดเริ่มต้นของไดเรกทอรี PuppyLinux 5.2.8 Lucid / bin ดูเหมือนว่า ...

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

โปรดทราบว่าคำสั่งมากที่สุดคือ symlinks busyboxไป ซึ่งรวมถึงashเชลล์แบบมินิมัลลิสต์ที่ใช้เป็นส่วนใหญ่ระหว่างการบู๊ต นอกจากนี้โปรดทราบว่าผู้สร้างการแจกจ่ายเลือกที่จะรวมคำสั่งแบบสแตนด์อโลนbunzip2และbzcatแทนที่จะใช้เวอร์ชัน busybox symlinks bunzip-BB-NOTUSEDและbzcat-BB-NOTUSEDไม่จำเป็นจริงๆ แต่ความช่วยเหลือเอกสารสิ่งที่เกิดขึ้นเพียงค่าใช้จ่ายของ symlink ที่

ยังทราบว่ารายการไดเรกทอรีว่ารายงานขนาดสำหรับเป้าหมายของการ symlinks (คนls -lLหรือls -l --dereference) แทน symlink busyboxตัวเองจะรายงานขนาดของแต่ละคำสั่งเป็นเช่นเดียวกับที่ ดังนั้นรายการเดียวกันที่มี-Lตัวเลือกจะแสดง ...

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 คือการนำโค้ดกลับมาใช้ใหม่ภายในตัวเองเพื่อลดขนาดหน่วยความจำและพื้นที่ดิสก์ที่ต้องการ (เช่น "footprint") สำหรับชุดคำสั่งทั่วไป ... โดยไม่ต้องใช้เชลล์เอง

ทุบตีและกระสุนอื่น ๆ บรรลุสิ่งเดียวกัน แต่จะทำเช่นนั้นพวกเขาใช้สภาพแวดล้อม commandline ของตัวเอง วัตถุประสงค์นี้ยังเป็นหนึ่งในเหตุผลสำหรับไวยากรณ์เก่าแก่บางส่วนสำหรับฟังก์ชันเชลล์จำนวนมาก

ฉันกำลังใช้นี้ "เทคนิค BusyBox" ห้องสมุดของฟังก์ชั่นทุบตีและง่ายต่อการใช้งานสำหรับห่อต่างๆbashisms มันให้ฉันได้อย่างง่ายดาย "ขยาย" คำสั่งด้วย--helpตัวเลือกและปิดรุ่น GUI เมื่อพร้อมใช้งาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.