สำหรับอุปกรณ์ Android ที่รูท
คุณสามารถลองติดตั้งแอปBusyBoxโดย Stephen Per Play Store เวอร์ชั่นต่ำสุดของ Android ที่แอพรองรับคือ Android 1.6 และเป็นแอพที่ได้รับการอัพเดท โดยพื้นฐานแล้วมันจะทำการติดตั้งbusybox binary ลงใน/system/xbin
และวางsymlinkไว้ในไดเรกทอรีเดียวกันสำหรับยูทิลิตี้ทั้งหมดที่มี
BusyBoxคืออะไร(ไม่ใช่แอป)
BusyBox รวมยูทิลิตี้ยูนิกซ์ทั่วไปหลายรุ่นเข้าด้วยกันในโปรแกรมขนาดเล็ก มันให้การทดแทนสำหรับยูทิลิตี้ส่วนใหญ่ที่คุณมักพบใน GNU fileutils, shellutils เป็นต้นยูทิลิตี้ใน BusyBox มักจะมีตัวเลือกน้อยกว่าลูกพี่ลูกน้อง GNU ที่มีคุณสมบัติครบถ้วน อย่างไรก็ตามตัวเลือกต่าง ๆ ที่รวมอยู่ในนั้นจะมีฟังก์ชั่นที่คาดหวังและมีพฤติกรรมคล้ายกับ GNU BusyBox จัดเตรียมสภาพแวดล้อมที่ค่อนข้างสมบูรณ์สำหรับระบบขนาดเล็กหรือฝังตัว
นี่คือรายการอย่างเป็นทางการของสาธารณูปโภคที่มีให้ find
เครื่องมือสามารถพบได้ที่นั่น
ทางเลือกที่เหมาะสมสำหรับ BusyBox คือ Toybox ซึ่งแทนที่ Toolboxในรุ่น Marshmallow
Toybox รวมยูทิลิตี้บรรทัดคำสั่ง Linux ทั่วไปเข้าด้วยกันเป็นไฟล์ปฏิบัติการ BSD ที่ได้รับอนุญาต มันง่ายขนาดเล็กเร็วและสมเหตุสมผลตามมาตรฐาน ( POSIX-2008และLSB 4.1 )
นี่คือรายการสนับสนุนอย่างเป็นทางการของ toybox สาธารณูปโภค BusyBox ในขณะนี้ดูเหมือนจะสนับสนุนเครื่องมือมากกว่า Toybox
ฉันไม่คิดว่ามีแอพที่ติดตั้ง Toybox binary ดังนั้นคุณอาจใช้คำตอบที่นี่เพื่อการติดตั้ง โปรดทราบว่าสามารถใช้คำตอบสำหรับการติดตั้งทั้ง Toybox และ BusyBox สิ่งที่จำเป็นต้องมีเท่านั้นกำลังดาวน์โหลดไบนารีจากแหล่งที่เป็นทางการ
ลิงค์ดาวน์โหลดอย่างเป็นทางการ:
สำหรับอุปกรณ์ Android ที่ไม่ได้รูท
ฉันไม่ทราบว่ามีวิธีการที่เป็นสากลสำหรับ Android ทุกรุ่นหรือไม่ ที่กล่าวว่าสำหรับ Android 4.0 ขึ้นไปติดตั้ง BusyBox (ไม่มีรูท)อ้างว่าใช้งานได้ อาจมีแอปเทอร์มินัลบางตัวที่มาพร้อมกับ BusyBox ไบนารี ฉันไม่ได้ทดสอบแอพพลิเคชั่นเทอร์มินัลส่วนตัวเป็นการส่วนตัว แต่มันง่ายที่จะเข้าใจว่าข้อเสียเปรียบที่ใหญ่ที่สุดของมันคือคุณไม่สามารถใช้แอพเทอร์มินัลใด ๆadb.
อย่างไรก็ตามมีวิธีการซึ่งดูเหมือนจะใช้ได้กับ Android ทุกรุ่นที่สูงกว่า 4.2 (จากการทดสอบของฉัน) /data/local/tmp
เป็นไดเรกทอรีที่ผู้ใช้สามารถแก้ไขshell
ได้ adb shell
ให้สิทธิ์เชลล์ระยะไกลบนอุปกรณ์และเข้าสู่ระบบด้วยผู้ใช้เดียวกัน
สิ่งที่คุณต้องทำคือใส่ BusyBox / Toybox ไบนารีลงใน/data/local/tmp
และสร้าง symlink สำหรับยูทิลิตี้ในไดเรกทอรีเดียวกัน คุณสามารถใช้ขั้นตอนต่อไปนี้
(ต้องใช้ adb ติดตั้งในพีซี)
adb push LOCAL_FILE / data / local / tmp / # แทนที่ LOCAL_FILE ด้วยพา ธ ไฟล์ของ toybox / busybox binary ในพีซี
adb shell
chmod 755 / data / local / tmp / FILE # การตั้งค่าการอนุญาตที่เหมาะสมบนไฟล์ไบนารีที่พุช แทนที่ FILE ด้วยชื่อของไบนารีที่คุณผลักในขั้นตอนแรก แนะนำให้ใช้คำเดียวเป็นชื่อที่มีตัวอักษรตัวพิมพ์เล็กทั้งหมด
box = / data / local / tmp / FILE # ตั้งค่าตัวแปรโลคัลสำหรับการใช้งานในขั้นตอนถัดไป แทนที่ไฟล์ตามความเหมาะสม
$ box | $ box sed 's / \ / \ n / g' | $ box sed '$ d' | ในขณะที่อ่านบรรทัด ทำ $ box ln -sf / data / local / tmp / FILE / data / local / tmp / $ line; เรียบร้อย # เรากำลังดำเนินการไบนารีที่อ้างอิงโดย $ box เพื่อแสดงรายการยูทิลิตี้ทั้งหมดตามด้วยการสร้างรายการจากนั้นสำหรับแต่ละรายการในรายการเราจะสร้าง symlink ในไดเรกทอรี
อิซซี่ได้ให้คำแนะนำมากที่สุดวิธีที่ตรงไปตรงมา symlinks สถานที่สำหรับ BusyBox ไบนารี
adb shell / data / local / tmp / FILE - ติดตั้ง -s / data / local / tmp / # แทนที่ FILE ตามความเหมาะสม - ติดตั้ง - s จะสร้าง symlink ที่ต้องการสำหรับคุณในไดเรกทอรี เส้นทางของไดเรกทอรีนั้นมีให้ถัดจากมัน
/data/local/tmp/TOOL
เครื่องมือที่ทุกคนในขณะนี้สามารถเข้าถึงได้โดยใช้เส้นทางแน่นอน เปลี่ยนเครื่องมือด้วยชื่อยูทิลิตี้ ตัวอย่างการใช้คำสั่ง find find:
adb shell /data/local/tmp/find --help
adb shell /data/local/tmp/FILE find --help # alternative way of using a tool
สำหรับเซสชันเชลล์เชิงโต้ตอบคุณสามารถเพิ่มตำแหน่งของไฟล์ลงใน $ PATH โดยใช้คำสั่งส่งออก:
ส่งออก PATH = / data / local / tmp: $ PATH # นี่เป็นการขึ้นต้น / data / local / tmp ไปเป็นค่าที่มีอยู่ของ $ PATH การส่งออกจะทำให้แน่ใจว่าเชลล์ย่อยดูค่าเดียวกันใน $ PATH
เสร็จสิ้นตอนนี้คุณสามารถใช้ find หรือยูทิลิตี้ BusyBox / Toybox อื่นในลักษณะนี้
adb shell
ค้นหา - ช่วย
มีการบันทึกไว้ว่าการเปลี่ยนแปลงใน $ PATH จะใช้งานได้เฉพาะสำหรับเซสชันเชลล์ปัจจุบัน หมายความว่าทุกครั้งที่คุณเปิดเชลล์โดยใช้ adb คุณจะต้องส่งออก $ PATH
ที่กล่าวว่าไม่มีการแก้ปัญหาของ Android อย่างเดียวสำหรับการประชุมเปลือกไม่โต้ตอบอื่นที่ไม่ใช่ของหาวิธีที่จะสร้างตัวแปรที่มีการดำรงอยู่และความคุ้มค่าจะยังคงมีอยู่เกินเชลล์เซสชั่ปัจจุบันในเครื่องคอมพิวเตอร์ของคุณไม่ได้ Android ตัวอย่าง:
adb shell $lolcat # $lolcat is a temporary variable in my shell on PC and it was assigned the value /system/xbin/toybox. My bash shell is replacing $lolcat with its value and then passing it to adb shell (or you can say, it first expanded the variable and then executed the whole command)