Para los dispositivos Android enraizados
Puedes considerar instalar BusyBox aplicación de Stephen. En la Play Store, la versión mínima de Android soportada por la aplicación es Android 1.6 y es una aplicación bien actualizada. En esencia, instala el busybox binario en /system/xbin
y lugares symlinks en el mismo directorio para todas las utilidades que tiene.
¿Qué es BusyBox (no la aplicación)?
BusyBox combina versiones diminutas de muchas utilidades comunes de UNIX en un único y pequeño ejecutable. Proporciona reemplazos para la mayoría de las utilidades que normalmente se encuentran en GNU fileutils, shellutils, etc. Las utilidades de BusyBox suelen tener menos opciones que sus primos de GNU con todas las funciones; sin embargo, las opciones que se incluyen proporcionan la funcionalidad esperada y se comportan de forma muy parecida a sus homólogos de GNU. BusyBox proporciona un entorno bastante completo para cualquier sistema pequeño o integrado.
Aquí es 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 liberación de malvaviscos.
Toybox combina muchas utilidades comunes de línea de comandos de Linux en un único ejecutable con licencia BSD. Es simple, pequeño, rápido y razonablemente compatible con los estándares ( POSIX-2008 y LSB 4.1 ).
Aquí es la lista oficial de los soportes de la caja de juguetes de utilidades. BusyBox, por el momento, parece soportar más herramientas que Toybox.
No creo que exista una aplicación para instalar el binario de Toybox, así que puedes usar mi respuesta aquí para el propósito de su instalación. Tengan en cuenta que la respuesta puede ser usada para la instalación tanto de Toybox como de BusyBox. El único prerrequisito es descargar el binario de las fuentes oficiales.
Enlaces oficiales de descarga:
Para los dispositivos Android no rooteados
No sé si hay un enfoque universal para todas las versiones de Android. Dicho esto, para Android 4.0 y superiores Instalación de BusyBox (sin root) afirma que trabaja. Puede que haya algunas aplicaciones terminales que vienen con el binario BusyBox. No he probado personalmente ninguna aplicación terminal de este tipo, pero es fácil de entender que su mayor inconveniente es: no se puede hacer ningún o gran uso de ellas usando adb .
Sin embargo, hay un enfoque que parece funcionar para cualquier versión de Android por encima de 4.2 (basado en mis pruebas). /data/local/tmp
es un directorio que puede ser editado por shell
usuario. adb shell
le concede el shell remoto en el dispositivo y el acceso como el mismo usuario.
Todo lo que tienes que hacer es poner BusyBox/Toybox binario en /data/local/tmp
y crear enlaces simbólicos para las utilidades en el mismo directorio. Para ello, puede utilizar los siguientes pasos.
(Requiere adb en el PC).
adb push LOCAL\_FILE /data/local/tmp/ # replace LOCAL\_FILE with the file path of toybox/busybox binary in PC
adb shell
chmod 755 /data/local/tmp/FILE # setting appropriate permission on pushed binary file. Replace FILE with the name of the binary you pushed in first step. Recommended is to use a single word as a name with all lower-case letters
box=/data/local/tmp/FILE # setting up a local variable for usage in next step. Replace FILE as appropriate
$box | $box sed 's/\\ /\\n/g'| $box sed '$d'| while read line; do $box ln -sf /data/local/tmp/FILE /data/local/tmp/$line; done # We're executing the binary referenced by $box to list all utilities, followed by creation of a list and then for each item in the list, we're creating a symlink in a directory.
Izzy ha recomendado lo más una forma sencilla de colocar los enlaces simbólicos de BusyBox binario .
adb shell /data/local/tmp/FILE --install -s /data/local/tmp/ # Replace FILE as appropriate. --install -s will create desired symlinks for you in a directory. Directory's path is provided next to it.
Ahora se puede acceder a todas esas herramientas usando el camino absoluto /data/local/tmp/TOOL
. Sustituye "herramienta" por el nombre de la utilidad. Ejemplo de uso del comando de búsqueda:
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 ARCHIVO en $PATH usando el comando de exportación:
export PATH=/data/local/tmp:$PATH # this is prefixing /data/local/tmp into the existing value of $PATH. export would make sure that sub-shells see the same value in $PATH
Hecho eso, ahora puedes usar find u otra utilidad de BusyBox/Toybox de esta manera:
adb shell
find --help
Es para cabe señalar que Los cambios en $PATH sólo son aplicables a la actual sesión de la cáscara. Significa que cada vez que lanzas un shell usando adb, tendrías que exportar $PATH.
Dicho esto, no hay una solución sólo para Android para las sesiones de shell no interactivas, sino de encontrar una manera de crear una variable cuya existencia y valor persistiría más allá de la sesión de shell actual en tu PC, no en 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)
0 votos
Preguntas útiles: Utilidades CLI sin root && Un terminal real (con o sin root) && ¿Por qué los comandos de Linux no funcionan correctamente en Android?
0 votos
Sí, este dispositivo está rooteado. Pero es interesante saber acerca de las formas compatibles no rooteados también :)