Dla zrootowanych urządzeń z Androidem
Możesz rozważyć zainstalowanie aplikacji BusyBox przez Stephen. W Sklepie Play minimalną wersją Androida obsługiwaną przez aplikację jest Android 1.6 i jest to dobrze zaktualizowana aplikacja. Zasadniczo instaluje plik binarny busybox w /system/xbin
i umieszcza dowiązania symboliczne w tym samym katalogu dla wszystkich narzędzi, które posiada.
Co to jest BusyBox (nie aplikacja)?
BusyBox łączy małe wersje wielu popularnych narzędzi UNIX w jeden mały plik wykonywalny. Zapewnia zamienniki większości narzędzi, które zwykle można znaleźć w plikach GNU, shellutils itp. Narzędzia w BusyBox mają na ogół mniej opcji niż ich kuzyni GNU z pełną funkcjonalnością; jednak zawarte w nim opcje zapewniają oczekiwaną funkcjonalność i zachowują się bardzo podobnie do ich odpowiedników GNU. BusyBox zapewnia dość kompletne środowisko dla każdego małego lub wbudowanego systemu.
Oto oficjalna lista dostępnych narzędzi. find
narzędzie można tam znaleźć.
Kompetentną alternatywą dla BusyBox jest Toybox, który zastąpił Toolbox w wydaniu Marshmallow.
Co to jest Toybox ?
Toybox łączy wiele popularnych narzędzi wiersza poleceń Linuksa w jeden plik wykonywalny na licencji BSD. Jest prosty, mały, szybki i w miarę zgodny ze standardami ( POSIX-2008 i LSB 4.1 ).
Oto oficjalna lista narzędzi, które obsługuje toybox. Obecnie BusyBox wydaje się obsługiwać więcej narzędzi niż Toybox.
Nie sądzę, aby istniała aplikacja do instalacji pliku binarnego Toybox, więc możesz użyć mojej odpowiedzi tutaj w celu jej instalacji. Pamiętaj, że odpowiedzi można użyć do instalacji zarówno Toybox, jak i BusyBox. Jedynym warunkiem jest pobranie pliku binarnego z oficjalnych źródeł.
Oficjalne linki do pobrania:
Dla nierootowanych urządzeń z Androidem
Nie wiem, czy istnieje uniwersalne podejście do wszystkich wersji Androida. To powiedziawszy, dla Androida 4.0 i nowszych BusyBox Install (bez rootowania) twierdzi, że działa. Niektóre aplikacje terminalowe mogą zawierać binarny BusyBox. Nie testowałem osobiście żadnej takiej aplikacji terminalowej, ale łatwo zrozumieć, że ich największą wadą jest to, że nie można z nich korzystać ani korzystać z nich zbyt dobrze za pomocąadb.
Istnieje jednak podejście, które wydaje się działać dla dowolnej wersji Androida powyżej 4.2 (na podstawie moich testów). /data/local/tmp
to katalog, który może edytować shell
użytkownik. adb shell
zapewnia zdalną powłokę na urządzeniu i loguje się jako ten sam użytkownik.
Wystarczy umieścić plik binarny BusyBox / Toybox /data/local/tmp
i utworzyć dowiązania symboliczne dla narzędzi w tym samym katalogu. W tym celu możesz wykonać następujące kroki.
(Wymaga adb konfiguracja na komputerze).
adb push LOCAL_FILE / data / local / tmp / # zamień LOCAL_FILE na ścieżkę pliku binarnego toybox / busybox na PC
powłoka adb
chmod 755 / data / local / tmp / FILE # ustawienie odpowiednich uprawnień do wypychanego pliku binarnego. Zamień PLIK na nazwę pliku binarnego wypchniętego w pierwszym kroku. Zalecane jest użycie pojedynczego słowa jako nazwy ze wszystkimi małymi literami
box = / data / local / tmp / FILE # konfigurowanie zmiennej lokalnej do użycia w następnym kroku. W razie potrzeby wymień PLIK
$ box | $ box sed 's / \ / \ n / g' | $ box sed '$ d' | podczas odczytu linii; do $ box ln -sf / data / local / tmp / FILE / data / local / tmp / $ line; done # Wykonujemy plik binarny, do którego odwołuje się $ box, aby wyświetlić listę wszystkich programów narzędziowych, a następnie utworzenie listy, a następnie dla każdego elementu na liście tworzymy dowiązanie symboliczne w katalogu.
Izzy zalecił najprostszy sposób umieszczania dowiązań symbolicznych dla binarnego BusyBox .
adb shell / data / local / tmp / FILE --install -s / data / local / tmp / # Zamień PLIK odpowiednio. --install -s utworzy dla ciebie pożądane dowiązania symboliczne w katalogu. Ścieżka do katalogu znajduje się obok niego.
Do wszystkich tych narzędzi można teraz uzyskać dostęp za pomocą ścieżki bezwzględnej /data/local/tmp/TOOL
. Zamień TOOL na nazwę narzędzia. Przykład użycia wywołania polecenia find:
adb shell /data/local/tmp/find --help
adb shell /data/local/tmp/FILE find --help # alternative way of using a tool
W przypadku interaktywnych sesji powłoki możesz dodać lokalizację PLIKU do $ PATH za pomocą polecenia eksportu:
export PATH = / data / local / tmp: $ PATH # to jest prefiks / data / local / tmp do istniejącej wartości $ PATH. eksport upewniałby się, że podpowłoki widzą tę samą wartość w $ PATH
Gotowe, możesz teraz użyć find lub innego narzędzia BusyBox / Toybox w następujący sposób:
powłoka adb
znajdź --help
Należy zauważyć, że zmiany w $ PATH mają zastosowanie tylko do bieżącej sesji powłoki. Oznacza to, że za każdym razem, gdy uruchamiasz powłokę za pomocą adb, musisz wyeksportować $ PATH.
To powiedziawszy, nie ma rozwiązania tylko dla Androida dla nieinteraktywnych sesji powłoki, oprócz znalezienia sposobu na utworzenie zmiennej, której istnienie i wartość pozostałyby poza bieżącą sesją powłoki na twoim komputerze, a nie dla Androida . Przykład:
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)