Para dispositivos Android enraizados
Você pode instalar o aplicativo BusyBox de Stephen. Por Play Store, a versão mínima do Android suportada pelo aplicativo é o Android 1.6 e é um aplicativo bem atualizado. Em essência, ele instala o binário do busybox/system/xbin
e coloca links simbólicos no mesmo diretório para todos os utilitários que possui.
O que é o BusyBox (não o aplicativo)?
O BusyBox combina pequenas versões de muitos utilitários UNIX comuns em um único pequeno executável. Ele fornece substituições para a maioria dos utilitários que você normalmente encontra nos arquivos GNU, shellutils etc. Os utilitários do BusyBox geralmente têm menos opções do que seus primos GNU completos; no entanto, as opções incluídas fornecem a funcionalidade esperada e se comportam de maneira semelhante aos seus equivalentes GNU. O BusyBox fornece um ambiente bastante completo para qualquer sistema pequeno ou incorporado.
Aqui está a lista oficial de utilitários que ele fornece. find
ferramenta pode ser encontrada lá.
Uma alternativa competente ao BusyBox é o Toybox, que substituiu o Toolbox na versão Marshmallow.
O Toybox combina muitos utilitários comuns de linha de comando do Linux em um único executável licenciado por BSD. É simples, pequeno, rápido e razoavelmente compatível com os padrões ( POSIX-2008 e LSB 4.1 ).
Aqui está a lista oficial de utilitários compatíveis com toybox. No momento, o BusyBox parece oferecer suporte a mais ferramentas que o Toybox.
Não acho que exista um aplicativo para instalar o binário do Toybox, portanto, você pode usar minha resposta aqui para fins de instalação. Observe que a resposta pode ser usada para a instalação do Toybox e do BusyBox. O único pré-requisito é baixar o binário de fontes oficiais.
Links para download oficiais:
Para dispositivos Android sem raiz
Não sei se existe uma abordagem universal para todas as versões do Android. Dito isto, para o Android 4.0 ou superior, o BusyBox Install (No Root) afirma funcionar. Pode haver alguns aplicativos de terminal que acompanham o binário BusyBox. Eu não testei pessoalmente nenhum desses aplicativos de terminal, mas é fácil entender que a maior desvantagem deles é: você não pode fazer nenhum ou muito bom uso deles usando adb .
Existe uma abordagem no entanto, que parece funcionar para qualquer versão do Android acima da 4.2 (com base nos meus testes). /data/local/tmp
é um diretório que pode ser editado pelo shell
usuário. adb shell
concede a você o shell remoto no dispositivo e efetua login como o mesmo usuário.
Tudo o que você precisa fazer é colocar o binário BusyBox / Toybox /data/local/tmp
e criar links simbólicos para os utilitários no mesmo diretório. Você pode usar as seguintes etapas para isso.
(Requer configuração adb no PC.)
adb push LOCAL_FILE / data / local / tmp / # substitua LOCAL_FILE pelo caminho do arquivo do binário toybox / busybox no PC
shell adb
chmod 755 / data / local / tmp / FILE # configurando a permissão apropriada no arquivo binário enviado. Substitua FILE pelo nome do binário que você enviou na primeira etapa. Recomendado é usar uma única palavra como nome com todas as letras minúsculas
box = / data / local / tmp / FILE # configurando uma variável local para uso na próxima etapa. Substitua FILE conforme apropriado
$ box | $ box sed 's / \ / \ n / g' | $ box sed '$ d' | enquanto lê linha; faça $ box ln -sf / data / local / tmp / FILE / data / local / tmp / $ line; done # Estamos executando o binário referido por $ box para listar todos os utilitários, seguido pela criação de uma lista e, em seguida, para cada item da lista, criando um link simbólico em um diretório.
Izzy recomendou a maneira mais direta de colocar links simbólicos para o binário do BusyBox .
shell adb / data / local / tmp / FILE --install -s / data / local / tmp / # Substitua FILE conforme apropriado. --install -s criará links simbólicos desejados para você em um diretório. O caminho do diretório é fornecido próximo a ele.
Todas essas ferramentas agora podem ser acessadas usando o caminho absoluto /data/local/tmp/TOOL
. Substitua TOOL pelo nome do utilitário. Exemplo de uso do comando find:
adb shell /data/local/tmp/find --help
adb shell /data/local/tmp/FILE find --help # alternative way of using a tool
Para sessões de shell interativas, você pode adicionar o local de FILE em $ PATH usando o comando export:
exportar PATH = / data / local / tmp: $ PATH # é o prefixo / data / local / tmp para o valor existente de $ PATH. a exportação garantiria que as subconchas vejam o mesmo valor em $ PATH
Feito isso, agora você pode usar o find ou outro utilitário BusyBox / Toybox desta maneira:
shell adb
find --help
Deve- se notar que as alterações no $ PATH são aplicáveis apenas à sessão atual do shell. Isso significa que toda vez que você inicia um shell usando adb, é necessário exportar $ PATH.
Dito isso, não há solução apenas para Android para sessões de shell não interativas além de encontrar uma maneira de criar uma variável cuja existência e valor persistam além da atual sessão de shell no seu PC, não no Android . Exemplo:
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)