#The Android Shell
Un « shell » est un programme qui écoute les entrées clavier d’un utilisateur et effectue des actions selon les instructions de l’utilisateur. Les appareils Android sont livrés avec un programme shell simple. Ce programme shell est en grande partie non documenté. Puisque beaucoup de personnes sont curieuses à son sujet, j’ai pensé écrire une documentation pour lui.
Currently this documentation is incomplete, sorry!
###Problèmes communs
Le shell intégré a une gestion des erreurs très limitée. Lorsque vous tapez un nom de commande de manière incorrecte, il dira « permission refusée », même si le vrai problème est qu’il n’a pas pu trouver la commande :
$ dirdir: permission denied <---- this is a misleading error message, should say 'dir: not found'$ ls... listing of current directory
#La variable PATH
Le shell Android exécutera tout programme qu’il trouvera dans son PATH. Le PATH est une liste de répertoires séparés par deux points (‘:’). Vous pouvez trouver ce que le PATH de votre shell est défini en utilisant la commande intégrée echo:
$ echo $PATH/data/local/bin:/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
Dépendant de votre shell, vous pouvez voir un résultat différent.
#Commandes intégrées
Chaque shell a quelques commandes intégrées. Certaines commandes intégrées communes sont :
- echo — imprime le texte sur stdout.
- set — définit les variables de l’interpréteur de commandes
- export — rend les variables de l’interpréteur de commandes disponibles pour les programmes de ligne de commande
- cd — change le répertoire actuel.
- pwd — imprime le nom du répertoire actuel.
#CommandesPour connaître les commandes dont vous disposez, utilisez la commande « ls » sur chacun des répertoires de la variable PATH.
##Formation des commandes Android.
Plusieurs des commandes Android sont basées sur des commandes Linux (ou bsd) standard. Si vous êtes curieux au sujet d’une commande, vous pouvez parfois apprendre comment elle fonctionne en utilisant la commande « man » sur un ordinateur de bureau Linux ou OSX (Apple Macintosh). La version Linux ou OSX de la commande peut être différente dans les détails, mais une grande partie de la documentation s’appliquera toujours à la version Android de la commande.
Une autre source de documentation pour les personnes qui n’ont pas une machine Linux ou OSX à portée de main est d’utiliser un navigateur Web et d’utiliser un moteur de recherche Web pour rechercher le texte : « man Linux nom-commande ».
##Liste des commandes
Ci-après figure la liste des commandes présentes sur un téléphone Nexus S exécutant une build Android 2.3.3 « user-debug ». Plusieurs de ces commandes ne sont pas présentes sur un téléphone « user ». (Elles sont absentes d’un téléphone « utilisateur » parce qu’elles sont spécifiques au développement ou au débogage du système d’exploitation Android.)
$ ls /data/local/bin/data/local/bin: No such file or directory
Notez que par défaut il n’y a pas de répertoire /data/local/bin. Vous pouvez créer ce répertoire en utilisant la commande « mkdir » si vous le souhaitez.
$ ls /sbinopendir failed, Permission denied
Le répertoire /sbin existe, mais vous n’avez pas la permission d’y accéder. Vous avez besoin d’un accès root. Si vous avez un téléphone de développeur, ou si vous avez autrement un accès root à votre téléphone, vous pouvez voir ce qu’il y a dans ce répertoire.
$ su# ls /sbinueventdadbd# exit$
Notez que l’invite du shell passe d’un ‘$’ à un ‘#’ pour indiquer que vous avez un accès root.
Notez également qu’aucune des commandes /sbin n’est utile au shell — les fichiers adb et ueventd sont des programmes ‘démons’ utilisés pour mettre en œuvre le programme Android Debugger « adb » qui est utilisé par les développeurs.
$ ls /vendor/bingpsdpvrsrvinit
Vendor/bin est l’endroit où les fournisseurs de périphériques peuvent mettre des exécutables spécifiques aux périphériques. Ces fichiers proviennent d’un Nexus S.
$ ls /system/sbin/system/sbin: No such file or directory
Ce répertoire n’existe pas sur un Nexus S.
$ ls /system/binam
am est le gestionnaire d’activités Android. Il est utilisé pour démarrer et arrêter les activités Android (par exemple, les applications) à partir de la ligne de commande. Tapez am tout seul pour obtenir une liste d’options.
amixaplay
Lecteur de fichiers audio en ligne de commande.
app_processapplypatch
Utilisé pour appliquer des correctifs aux fichiers android.
arec
Enregistreur audio en ligne de commande.
audioloopbluetoothd
Démon BlueTooth
bmgr
Gestionnaire de sauvegarde – tapez la commande par elle-même pour obtenir la documentation.
bootanimation
Dessine l’animation de démarrage. Vous devrez peut-être réinitialiser votre téléphone pour en sortir.
brcm_patchram_plusbugreportcat
Copie le contenu d’un fichier sur la sortie standard.
chmod
Change le mode d’un fichier (par ex. s’il peut être lu ou écrit.)
chown
Changer le propriétaire d’un fichier.
cmp
Comparer deux fichiers octet par octet
dalvikvm
La machine virtuelle dalvik. (Utilisée pour exécuter les applications Android.)
date
Imprime la date et l’heure actuelles
dbus-daemondd
Convertit et copie un fichier. Par défaut, copie l’entrée standard vers la sortie standard.
debuggerddexoptdf
Affiche l’espace libre sur les différents systèmes de fichiers de votre appareil.
dhcpcddmesgdnsmasqdumpstatedumpsysdvzfsck_msdosgdbservergeteventgetpropgziphciattachhdidifconfig
Montre la configuration actuelle des interfaces réseau (IP, adresse MAC etc)
iftop
Montre les processus actuels utilisant les interfaces réseau (haut, mais pour les réseaux)
imeinputinsmodinstalldioctlioniceiptables
Gère le pare-feu
keystorekeystore_clikill
Envoie des signaux aux processus.
linkerln
Utilisé pour établir un lien avec le système de fichiers.
loglogcat
Imprime le journal d’exécution d’Android.
logwrapperls
Liste les fichiers.
lsmodlsofmake_ext4fsmediaservermkdir
Faire un répertoire.
monkey
Programme qui envoie des événements aléatoires, utilisé pour tester des applications. (Comme avoir un singe qui joue avec le périphérique.)
mountmtpdmv
Déplacer un fichier d’un répertoire à un autre. (Uniquement sur le même système de fichiers. Utilisez « cat a > b » pour copier un fichier entre systèmes de fichiers.
nandreadndcnetcfgnetdnetstatnewfs_msdosnotifyomx_testspandpingpmpppdprintenvps
Liste des processus actifs.
qemu-propsqemudracoonradiooptionsreboot
Redémarrer le périphérique.
recordrenicerildrm
Supprimer un fichier.
rmdir
Supprimer un répertoire.
rmmodroutertp_testrun-asschedtestschedtopsdcardsdptoolsendeventserviceservicemanagersetconsolesetpropsetup_fsshshowleasesleepsmdstagefrightstart
Démarrer le runtime Android.
stop
Arrête le runtime Android.
surfaceflingersvcsyncsystem_servertctestid3toolboxtop
Affiche les processus qui utilisent actuellement le plus de temps CPU.
umountuptime
Imprime la durée de fonctionnement de votre appareil depuis son dernier démarrage.
vdcvmstatvoldwatchpropswipewpa_cliwpa_supplicant$ ls /system/xbinadd-property-tagbtoolcheck-lost+founddexdumpdhdutilhcidumplatencytoplibrankopcontroloprofiledprocmemprocrankrawbuscp
Programme de copie sécurisée. (Utilisé pour copier des fichiers sur le réseau.)
showmapshowslabsqlite3
Utilisé pour administrer les bases de données SQLite.
strace
Commande de trace système – à utiliser pour voir quels appels système un programme fait.
su
Démarrer un shell avec les privilèges de root.
#Versions du shell Android
- Android 1.0 utilisait un shell qui n’avait pas de complétion de tabulation ou d’édition d’historique.
- Android 2.3 a ajouté l’édition d’historique. Vous pouvez par exemple utiliser les flèches haut/bas pour modifier les commandes précédentes.
#Autres shells
#Busybox
Busybox est un programme qui contient un shell et un ensemble d’utilitaires de ligne de commande. Cherchez « Busybox » sur Android Market et vous devriez trouver des versions que vous pouvez installer. Le shell Busybox comprend la complétion de tabulation et l’édition de l’historique. Certaines versions de Busybox pour Android ne nécessitent pas que vous rootiez votre téléphone.
#Utilitaires Debian
Vous pouvez installer le shell et les utilitaires Debian complets. (Debian est une distribution Linux de bureau populaire.) Je ne connais pas les détails, et cela peut nécessiter un téléphone « rooté ». Essayez une recherche sur le web pour « Debian Android install ».
#Les ROMs personnalisées
Certaines ROMs personnalisées viennent avec leurs propres shells et utilitaires. Si vous utilisez une ROM personnalisée, vérifiez sa documentation pour découvrir ce qui est disponible.