Pour les appareils Android rootés
Vous pouvez envisager d'installer l' application BusyBox par Stephen. Par Play Store, la version minimale d'Android prise en charge par l'application est Android 1.6 et c'est une application bien mise à jour. En substance, il installe le binaire busybox dans /system/xbin
et place les liens symboliques dans le même répertoire pour tous les utilitaires dont il dispose.
Qu'est-ce que BusyBox (pas l'application)?
BusyBox combine de minuscules versions de nombreux utilitaires UNIX courants en un seul petit exécutable. Il fournit des remplacements pour la plupart des utilitaires que vous trouverez habituellement dans les fichiers GNU, shellutils, etc. Les utilitaires dans BusyBox ont généralement moins d'options que leurs cousins GNU complets; cependant, les options incluses fournissent les fonctionnalités attendues et se comportent très bien comme leurs homologues GNU. BusyBox fournit un environnement assez complet pour tout petit système ou système embarqué.
Voici la liste officielle des utilitaires qu'il fournit. find
outil peut être trouvé là-bas.
Une alternative compétente à BusyBox est Toybox, qui a remplacé Toolbox dans la version Marshmallow.
Qu'est-ce que Toybox ?
Toybox combine de nombreux utilitaires de ligne de commande Linux communs en un seul exécutable sous licence BSD. C'est simple, petit, rapide et raisonnablement conforme aux normes ( POSIX-2008 et LSB 4.1 ).
Voici la liste officielle des utilitaires que Toybox prend en charge. BusyBox, pour le moment, semble prendre en charge plus d'outils que Toybox.
Je ne pense pas qu'il existe une application pour installer le binaire Toybox, vous pouvez donc utiliser ma réponse ici pour son installation. Notez que la réponse peut être utilisée pour l'installation de Toybox et BusyBox. La seule condition préalable est de télécharger le binaire à partir de sources officielles.
Liens de téléchargement officiels:
Pour les appareils Android non rootés
Je ne sais pas s'il existe une approche universelle pour toutes les versions d'Android. Cela dit, pour Android 4.0 et supérieur, BusyBox Install (No Root) prétend fonctionner. Certaines applications de terminal peuvent être fournies avec le binaire BusyBox. Je n'ai personnellement testé aucune de ces applications de terminal, mais il est facile de comprendre que leur plus gros inconvénient est: vous ne pouvez pas en faire bon usage ou beaucoup en utilisant adb .
Il existe cependant une approche qui semble fonctionner pour toute version Android supérieure à 4.2 (sur la base de mes tests). /data/local/tmp
est un répertoire qui peut être édité par l' shell
utilisateur. adb shell
vous accorde le shell distant sur l'appareil et vous connecte en tant que même utilisateur.
Tout ce que vous avez à faire est de mettre le binaire BusyBox / Toybox dans /data/local/tmp
et de créer des liens symboliques pour les utilitaires dans le même répertoire. Vous pouvez utiliser les étapes suivantes pour cela.
(Nécessite une configuration adb sur PC.)
adb pousser LOCAL_FILE / data / local / tmp / # remplacer LOCAL_FILE par le chemin de fichier du toybox / busybox binaire dans PC
adb shell
chmod 755 / data / local / tmp / FILE # définissant l'autorisation appropriée sur le fichier binaire poussé. Remplacez FILE par le nom du binaire que vous avez poussé à la première étape. Il est recommandé d'utiliser un seul mot comme nom avec toutes les lettres minuscules
box = / data / local / tmp / FILE # configuration d'une variable locale à utiliser à l'étape suivante. Remplacez FILE selon le cas
$ box | $ box sed 's / \ / \ n / g' | $ box sed '$ d' | pendant la lecture de la ligne; faire $ box ln -sf / data / local / tmp / FILE / data / local / tmp / $ line; done # Nous exécutons le binaire référencé par $ box pour lister tous les utilitaires, suivi de la création d'une liste puis pour chaque élément de la liste, nous créons un lien symbolique dans un répertoire.
Izzy a recommandé la manière la plus simple de placer des liens symboliques pour le binaire BusyBox .
shell adb / data / local / tmp / FILE --install -s / data / local / tmp / # Remplacez FILE comme il convient. --install -s créera les liens symboliques souhaités pour vous dans un répertoire. Le chemin du répertoire est fourni à côté.
Tous ces outils sont désormais accessibles via le chemin absolu /data/local/tmp/TOOL
. Remplacez TOOL par le nom de l'utilitaire. Exemple d'utilisation de l'appel de la commande find:
adb shell /data/local/tmp/find --help
adb shell /data/local/tmp/FILE find --help # alternative way of using a tool
Pour les sessions shell interactives, vous pouvez ajouter l'emplacement de FILE dans $ PATH à l'aide de la commande d'exportation:
export PATH = / data / local / tmp: $ PATH # c'est le préfixe / data / local / tmp dans la valeur existante de $ PATH. l'exportation ferait en sorte que les sous-shells voient la même valeur dans $ PATH
Cela fait, vous pouvez maintenant utiliser find ou un autre utilitaire BusyBox / Toybox de cette manière:
adb shell
trouver --help
Il est à noter que les modifications de $ PATH ne s'appliquent qu'à la session shell actuelle. Cela signifie que chaque fois que vous lancez un shell en utilisant adb, vous devez exporter $ PATH.
Cela dit, il n'y a pas de solution Android uniquement pour les sessions shell non interactives autre que de trouver un moyen de créer une variable dont l'existence et la valeur persisteraient au-delà de la session shell actuelle sur votre PC, pas Android . Exemple:
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)