Как выполнить текстовый поиск GREP без рута?

Есть busybox и эмуляторы терминала, включающие grep , но для их запуска требуется root. Было бы лучше, если бы они тоже могли работать без рута, но с ограниченным доступом. Мне нужно только grep (доступ только для чтения) файлы в хранилище пользовательских данных.

Есть ли способ поиска текста grep на Android без рута?

Уже существует множество текстовых редакторов, но они поддерживают только обычный текстовый поиск путем перехода к текстовой позиции, что далеко не так удобно, как grep , где можно получить желаемые результаты в списке в одном месте.

Какую версию Android вы используете?
Пробовали через adb?
@Adem Я уже знаю ADB, но работает ли ADB без внешнего компьютера?
@Firelord У этого телефона Android 7, Nougat. Но было бы здорово иметь решение, совместимое и со старыми версиями Android, например с Jelly Bean.
Насколько мне известно, это не сработает.
Извините, я забыл обновить: вскоре после того, как я задал этот вопрос, я узнал, что терминал Android от jackpal работает без проблем. ( jackpal.androidterm)

Ответы (2)

Вы смешиваете две вещи:

  1. Установка двоичного кода, такого как busybox, из приложения (которое включает grep)
  2. Запуск двоичного файла

Установщики Busybox на основе приложений по умолчанию требуют root-доступа для установки busybox в масштабах всей системы. Это правда, однако это только потому, что это приложение. После установки бинарника вам не нужен root-доступ.

Кроме того, даже без рута вы также можете установить на свое устройство двоичный файл busybox (или что-то еще):

  1. Вам необходимо активировать Android Debug Bridge (adb)
  2. Скопируйте бинарник на свой телефон (если его там еще нет):adb push busybox /sdcard/
  3. Скопируйте двоичный файл из раздела SD-карты (где он не может быть выполнен) в другой каталог, например /data/localили /data/local/tmp: adb shell "cat /sdcard/busybox > /data/local/busybox«.
  4. Затем сделайте его исполняемым, используяadb shell chmod 0555 /data/local/busybox

Теперь вы можете выполнить его, используя полный путь из терминального приложения или внутри adb shell:

/data/local/busybox grep ....

Хочу добавить, что chmodнедоступно в версиях Android до Lollipop.
Есть даже по крайней мере один установщик Busybox, не требующий рута ( Busybox Installer (без рута) ). Кроме того: есть ли причина, по которой вы catкопируете файл вместо cp?
@Izzy Плюс, adb shell catчто-то будет на компьютере, а не на телефоне.
@iBug, который зависит от перенаправления — и как вы это процитируете: adb shell "cat foo > /sdcard/bar"останется на устройстве. Но уберите кавычки, и он может пожаловаться, что пропускает /sdcardна вашем компьютере :)
@Izzy Я помню, что сталкивался со многими устройствами, на которых не было этой cpкоманды. Однако catбыл на каждом доступном устройстве, которое мне когда-либо попадалось в руки.
Хороший вопрос, Роберт (хотя я никогда не сталкивался с таким устройством) - вы можете интегрировать это со своим ответом. К сожалению, использование busybox cpздесь было бы проблемой курицы и яйца #D // Если вы объедините факты из комментариев со своим ответом, пожалуйста, отправьте мне пинг для очистки комментариев :)

Если вы используете Android Lollipop или более позднюю версию, установите Termux , установите grep (если он еще не установлен), набрав apt install grep, дайте разрешение на хранение Termux из приложения «Настройки», чтобы можно было получить доступ к внутреннему хранилищу. Вот и все. Наслаждайтесь своим grep. Вы также можете установить busybox таким же образом в Termux (похоже, он устанавливается вместе с Termux для каждого пользователя iBug) и использовать его утилиты. Установка и использование не требуют повышенных привилегий.

Если вы используете версию Android до Lollipop, ответ Роберта предлагает хороший способ, но некоторые шаги можно исключить. Просто скачайте отсюда бинарный файл Android, совместимый с вашим процессором , переименуйте его в busybox и вставьте в Android с помощью :

adb push busybox /data/local/tmp/ # не помещайте его в /sdcard/, так как он не нужен и удаляет исполняемый бит из двоичного файла, который вы не можете добавить, не имея утилиты busybox или toybox'x chmod. 

Теперь вы можете использовать busybox. Вы хотели бы настроить псевдоним или изменить переменную ENVIRONMENT вашей оболочки соответственно, чтобы отобразить этот файл.

В качестве альтернативы, хотя я не пробовал их, некоторые приложения на основе grep доступны в Play Store и их можно найти здесь .

BusyBox устанавливается в Termux по умолчанию (при первом запуске) и включает в себя grep.