Для вкорінених пристроїв Android
Ви можете розглянути можливість встановлення програми BusyBox від Stephen. Мінімальна версія Android, що підтримується програмою, на Play Store - це Android 1.6, і це добре оновлений додаток. По суті, він встановлює бінарний файл зайнятої в /system/xbin
і розміщує посилання в одному каталозі для всіх утиліт, які він має.
Що таке BusyBox (не додаток)?
BusyBox поєднує крихітні версії багатьох поширених утиліт UNIX в єдиний невеликий виконуваний файл. Він надає заміни для більшості утиліт, які ви зазвичай знаходите у файлових файлах GNU, оболонках і т. Д. Утиліти в BusyBox зазвичай мають менше варіантів, ніж їх повнофункціональні двоюрідні брати GNU; проте включені варіанти забезпечують очікувану функціональність і ведуть себе дуже схоже на своїх колег з GNU. BusyBox забезпечує досить повне середовище для будь-якої невеликої або вбудованої системи.
Ось офіційний список комунальних послуг, які він надає. find
інструмент можна знайти там.
Компетентною альтернативою BusyBox є Toybox, який замінив Toolbox у версії Marshmallow.
Toybox поєднує багато поширених утиліт командного рядка Linux разом у єдиний виконуваний файл, що має ліцензію BSD. Це просте, невелике, швидке та розумно відповідне стандартам ( POSIX-2008 та LSB 4.1 ).
Ось офіційний список підтримуваних утиліт для іграшок. На даний момент, схоже, BusyBox підтримує більше інструментів, ніж Toybox.
Я не думаю, що додаток для встановлення двійкового Toybox не існує, тому ви можете використовувати тут мою відповідь для цілей його встановлення. Зауважте, що відповідь можна використовувати для встановлення і Toybox, і BusyBox. Єдиною умовою є завантаження бінарного файлу з офіційних джерел.
Офіційні посилання для завантаження:
Для не вкорінених пристроїв Android
Я не знаю, чи існує універсальний підхід для всіх версій Android. Однак, для Android 4.0 та новіших версій BusyBox Install (No Root) претензії працюють. Можливо, є кілька термінальних додатків, які постачаються з бінарними файлами BusyBox. Я особисто не перевіряв жодного такого додатка для терміналів, але легко зрозуміти, що найбільшим їх недоліком є: ви не можете використовувати якісь або багато корисних з них, використовуючиadb.
Однак існує підхід, який, як видається, працює для будь-якої версії Android вище 4.2 (на основі моїх тестів). /data/local/tmp
це каталог, який може редагувати shell
користувач. adb shell
надає віддалену оболонку на пристрої та входить у систему як той самий користувач.
Все, що вам потрібно зробити, - це вставити бінарний файл BusyBox / Toybox /data/local/tmp
і створити символьні посилання для утиліт в одному каталозі. Для цього можна скористатися наступними кроками.
(Потрібно adb налаштування на ПК.)
adb push LOCAL_FILE / data / local / tmp / # замінити LOCAL_FILE на шлях файлу в двійковій іграшці / busbox в ПК
оболонка adb
chmod 755 / data / local / tmp / FILE # встановлення відповідного дозволу на висунутий бінарний файл. Замініть FILE на ім'я бінарного файлу, який ви натиснули на першому кроці. Рекомендується використовувати одне слово як ім'я з усіма малими літерами
box = / data / local / tmp / FILE # налаштування локальної змінної для використання на наступному кроці. Замініть ФАЙЛ відповідно
$ коробка | $ box sed 's / \ / \ n / g' | $ box sed '$ d' | під час читання рядка; зробіть $ box ln -sf / data / local / tmp / FILE / data / local / tmp / $ line; done # Ми виконуємо двійковий код, на який посилається $ box, щоб перерахувати всі утиліти, після чого створити список, а потім для кожного елемента в списку ми створюємо символьну посилання в каталозі.
Іззі рекомендував найпростіший спосіб розміщення символьних посилань для бінарних файлів BusyBox .
adb shell / data / local / tmp / FILE --install -s / data / local / tmp / # Замініть файл відповідно. --install -s створить для вас потрібні посилання в каталозі. Поруч із ним надається шлях до каталогу.
Тепер до всіх цих інструментів можна отримати абсолютний шлях /data/local/tmp/TOOL
. Замініть TOOL на ім'я утиліти. Приклад використання команди пошуку виклику:
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
знайти - допомогти
Слід зазначити, що зміни в $ 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)