Para dispositivos Android rooteados
Puede considerar instalar la aplicación BusyBox de Stephen. Por Play Store, la versión mínima de Android compatible con la aplicación es Android 1.6 y es una aplicación bien actualizada. En esencia, instala el binario busybox/system/xbin
y coloca enlaces simbólicos en el mismo directorio para todas las utilidades que tiene.
¿Qué es BusyBox (no la aplicación)?
BusyBox combina pequeñas versiones de muchas utilidades comunes de UNIX en un único ejecutable pequeño. Proporciona reemplazos para la mayoría de las utilidades que generalmente se encuentran en GNU Fileutils, Shellutils, etc. Las utilidades en BusyBox generalmente tienen menos opciones que sus primos GNU con todas las funciones; sin embargo, las opciones que se incluyen proporcionan la funcionalidad esperada y se comportan de manera muy similar a sus contrapartes GNU. BusyBox proporciona un entorno bastante completo para cualquier sistema pequeño o integrado.
Aquí está la lista oficial de utilidades que proporciona. find
herramienta se puede encontrar allí.
Una alternativa competente a BusyBox es Toybox, que ha reemplazado a Toolbox en la versión Marshmallow.
Toybox combina muchas utilidades comunes de línea de comandos de Linux en un solo ejecutable con licencia BSD. Es simple, pequeño, rápido y razonablemente compatible con los estándares ( POSIX-2008 y LSB 4.1 ).
Aquí está la lista oficial de utilidades que toybox admite. BusyBox, en este momento, parece admitir más herramientas que Toybox.
No creo que exista una aplicación para instalar el binario de Toybox, por lo que puede usar mi respuesta aquí para su instalación. Tenga en cuenta que la respuesta se puede utilizar para la instalación de Toybox y BusyBox. El único requisito previo es descargar el binario de fuentes oficiales.
Enlaces oficiales de descarga:
Para dispositivos Android no rooteados
No sé si existe un enfoque universal para todas las versiones de Android. Dicho esto, para Android 4.0 y versiones posteriores, BusyBox Install (No Root) afirma funcionar. Puede haber algunas aplicaciones de terminal que vienen con BusyBox binary. No he probado personalmente ninguna aplicación de terminal de este tipo, pero es fácil entender que su mayor inconveniente es: no se puede hacer un buen uso de ellas con adb .
Sin embargo, existe un enfoque que parece funcionar para cualquier versión de Android anterior a 4.2 (según mis pruebas). /data/local/tmp
es un directorio que puede ser editado por el shell
usuario. adb shell
le otorga el shell remoto en el dispositivo e inicia sesión como el mismo usuario.
Todo lo que tiene que hacer es poner el binario BusyBox / Toybox /data/local/tmp
y crear enlaces simbólicos para las utilidades en el mismo directorio. Puede usar los siguientes pasos para eso.
(Requiere la configuración de adb en la PC).
adb push LOCAL_FILE / data / local / tmp / # reemplaza LOCAL_FILE con la ruta del archivo de binario toybox / busybox en la PC
adb shell
chmod 755 / data / local / tmp / FILE # configurando el permiso apropiado en el archivo binario insertado. Reemplace ARCHIVO con el nombre del binario que introdujo en el primer paso. Se recomienda usar una sola palabra como nombre con todas las letras minúsculas
box = / data / local / tmp / FILE # configurando una variable local para su uso en el siguiente paso. Reemplace ARCHIVO según corresponda
$ box | $ box sed 's / \ / \ n / g' | $ box sed '$ d' | mientras lee la línea; do $ box ln -sf / data / local / tmp / FILE / data / local / tmp / $ line; done # Estamos ejecutando el binario al que hace referencia $ box para enumerar todas las utilidades, seguido de la creación de una lista y luego para cada elemento de la lista, estamos creando un enlace simbólico en un directorio.
Izzy ha recomendado la forma más sencilla de colocar enlaces simbólicos para el binario BusyBox .
adb shell / data / local / tmp / FILE --instalar -s / data / local / tmp / # Reemplace FILE según corresponda. --install -s creará los enlaces simbólicos deseados para usted en un directorio. La ruta del directorio se proporciona al lado.
Ahora se puede acceder a todas esas herramientas utilizando la ruta absoluta /data/local/tmp/TOOL
. Reemplace TOOL con el nombre de la utilidad. Ejemplo de uso de llamar al comando find:
adb shell /data/local/tmp/find --help
adb shell /data/local/tmp/FILE find --help # alternative way of using a tool
Para sesiones de shell interactivas, puede agregar la ubicación de FILE en $ PATH usando el comando de exportación:
export PATH = / data / local / tmp: $ PATH # esto es el prefijo / data / local / tmp en el valor existente de $ PATH. export aseguraría que las subcapas vean el mismo valor en $ PATH
Hecho esto, ahora puede usar find u otra utilidad BusyBox / Toybox de esta manera:
adb shell
encontrar ayuda
Cabe señalar que los cambios en $ PATH son aplicables solo para la sesión de shell actual. Significa que cada vez que ejecutas un shell usando adb, deberías exportar $ PATH.
Dicho esto, no existe una solución solo para Android para sesiones de shell no interactivas que no sea encontrar una manera de crear una variable cuya existencia y valor persistirían más allá de la sesión de shell actual en su PC, no Android . Ejemplo:
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)