¿Cómo hacer una búsqueda de texto GREP sin root?

Hay busybox y hay emuladores de terminal que incluyen grep , pero requieren root para ejecutarse. Sería mejor si también pudieran ejecutarse sin root pero con acceso limitado. Solo necesito grep (acceso de solo lectura) archivos en el almacenamiento de datos del usuario.

¿ Hay alguna manera de realizar búsquedas de texto grep en Android sin root?

Ya hay muchos editores de texto, pero solo admiten la búsqueda de texto normal saltando a la posición de texto, que no es tan conveniente como grep , donde uno obtiene los resultados deseados en una lista en un solo lugar.

¿Qué versión de Android estás usando?
¿Lo intentaste a través de adb?
@Adem Ya conozco ADB, pero ¿funciona ADB sin necesidad de una computadora externa?
@Firelord Ese teléfono tiene Android 7, Nougat. Pero sería genial tener una solución que también sea compatible con versiones anteriores de Android, como Jelly Bean.
Que yo sepa, eso no funcionará.
Lo siento, olvidé actualizar: Poco después de hacer esta pregunta, descubrí que Android Terminal by jackpal funciona sin problemas. ( jackpal.androidterm)

Respuestas (2)

Estás mezclando dos cosas:

  1. Instalar un sistema binario similar a un sistema busybox desde una aplicación (que incluye grep)
  2. Ejecutando un binario

Los instaladores predeterminados basados ​​en aplicaciones para busybox requieren acceso raíz para instalar busybox en todo el sistema. Esto es cierto, sin embargo, esto es solo porque es una aplicación. Una vez que el binario está instalado, no necesita acceso de root.

Además, incluso sin root, también puede instalar un binario busybox (o lo que sea) en su dispositivo:

  1. Necesitas activar Android Debug Bridge (adb)
  2. Copie el binario en su teléfono (si aún no está allí):adb push busybox /sdcard/
  3. Copie el binario de la sección sdcard (donde no se puede ejecutar) a un directorio diferente como /data/localo /data/local/tmp: adb shell "cat /sdcard/busybox > /data/local/busybox".
  4. Luego hazlo ejecutable usandoadb shell chmod 0555 /data/local/busybox

Ahora puede ejecutarlo usando su ruta completa desde una aplicación de terminal o dentro adb shell:

/data/local/busybox grep ....

Quiero agregar que chmodno está disponible en versiones de Android anteriores a Lollipop.
Incluso hay al menos un instalador de Busybox que no requiere root ( Busybox Installer (no root) ). Aparte de eso: ¿algún motivo que use catpara copiar un archivo, en lugar de cp?
@Izzy Plus, le adb shell catdará algo a la computadora, no al teléfono.
@iBug que depende de la redirección, y de cómo lo cite: adb shell "cat foo > /sdcard/bar"permanecerá en el dispositivo. Pero elimine las comillas, y puede quejarse de que no está /sdcarden su computadora :)
@Izzy Recuerdo haber encontrado muchos dispositivos que no tenían el cpcomando. Sin embargo cat, estaba en todos y cada uno de los dispositivos disponibles que tuve en mis manos.
Buen punto, Robert (aunque nunca me encontré con un dispositivo de este tipo): es posible que desee integrar eso con su respuesta. Desafortunadamente, usar busybox cpsería un problema de huevo y gallina aquí #D // Si integra los hechos de los comentarios con su respuesta, envíeme un ping después para la limpieza de comentarios :)

Si está utilizando Android Lollipop o superior, instale Termux , instale grep (si aún no está instalado) escribiendo apt install grep, otorgue permiso de almacenamiento a Termux desde la aplicación Configuración para que se pueda acceder al almacenamiento interno. Y eso es. Disfruta de tu grep. También puede instalar busybox de la misma manera en Termux (parece que viene instalado con Termux por usuario iBug) y usar sus utilidades. La instalación y el uso no requieren privilegios elevados.

Si está utilizando una versión de Android anterior a Lollipop, la respuesta de Robert sugiere una buena manera, pero se pueden eliminar algunos pasos. Simplemente obtenga el binario de Android compatible con su procesador desde aquí , cámbiele el nombre a busybox e introdúzcalo en Android usando como:

adb push busybox /data/local/tmp/ # no lo inserte en /sdcard/ ya que es innecesario y elimina el bit ejecutable del binario que no puede agregar sin tener la utilidad chmod de busybox o toybox'x. 

Ahora puede usar el cuadro ocupado. Le gustaría configurar un alias o cambiar la variable ENTORNO de su shell en consecuencia para mapear ese archivo.

Alternativamente, aunque no las he probado, algunas aplicaciones basadas en grep están disponibles en Play Store y se pueden encontrar aquí .

BusyBox viene instalado en Termux por defecto (en el primer lanzamiento) e incluye un grep.