#The Android Shell
Un «shell» es un programa que escucha la entrada del teclado de un usuario y realiza acciones según las indicaciones del usuario. Los dispositivos Android vienen con un programa de shell simple. Este programa shell no está documentado en su mayoría. Ya que mucha gente tiene curiosidad sobre él, pensé en escribir algo de documentación para él.
Currently this documentation is incomplete, sorry!
##Problemas comunes
El shell incorporado tiene un manejo de errores muy limitado. Cuando escribes mal el nombre de un comando te dirá «permiso denegado», aunque el verdadero problema es que no ha podido encontrar el comando:
$ dirdir: permission denied <---- this is a misleading error message, should say 'dir: not found'$ ls... listing of current directory
#La variable PATH
El shell de Android ejecutará cualquier programa que encuentre en su PATH. El PATH es una lista de directorios separados por dos puntos (‘:’). Puede averiguar cuál es el PATH de su shell utilizando el comando echo incorporado:
$ echo $PATH/data/local/bin:/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
Dependiendo de su shell, puede ver un resultado diferente.
#Comandos incorporados
Cada shell tiene algunos comandos incorporados. Algunos comandos incorporados comunes son:
- echo — imprime texto en stdout.
- set — establece variables del shell
- export — hace que las variables del shell estén disponibles para los programas de la línea de comandos
- cd — cambia el directorio actual.
- pwd — imprime el nombre del directorio actual.
#ComandosPara saber qué comandos tienes a tu disposición, utiliza el comando «ls» en cada uno de los directorios de la variable PATH.
##Encontrar documentación para los comandos de Android.
Muchos de los comandos de Android están basados en comandos estándar de Linux (o bsd). Si tienes curiosidad por un comando, a veces puedes aprender cómo funciona utilizando el comando «man» en un ordenador de escritorio Linux o OSX (Apple Macintosh). La versión Linux u OSX del comando puede ser diferente en detalles, pero gran parte de la documentación seguirá aplicándose a la versión Android del comando.
Otra fuente de documentación para las personas que no tienen una máquina Linux u OSX a mano es utilizar un navegador web y utilizar un motor de búsqueda web para buscar el texto «man Linux command-name».
#Lista de comandos
La siguiente es una lista de los comandos que están presentes en un teléfono Nexus S que ejecuta una compilación de Android 2.3.3 «user-debug». Muchos de estos comandos no están presentes en un teléfono de «usuario». (No están presentes en un teléfono «de usuario» porque son específicos para desarrollar o depurar el sistema operativo Android.)
$ ls /data/local/bin/data/local/bin: No such file or directory
Nota que por defecto no hay un directorio /data/local/bin. Puedes crear este directorio usando el comando «mkdir» si quieres.
$ ls /sbinopendir failed, Permission denied
El directorio /sbin existe, pero no tienes permiso para acceder a él. Necesitas acceso de root. Si tienes un teléfono para desarrolladores, o de otra manera tienes acceso de root a tu teléfono puedes ver lo que hay en este directorio.
$ su# ls /sbinueventdadbd# exit$
Nota que el prompt del shell cambia de un ‘$’ a un ‘#’ para indicar que tienes acceso de root.
Nota también que ninguno de los comandos /sbin son útiles para el shell — los archivos adb y ueventd son programas ‘daemon’ utilizados para implementar el programa Android Debugger «adb» que es utilizado por los desarrolladores.
$ ls /vendor/bingpsdpvrsrvinit
Vendor/bin es donde los vendedores de dispositivos pueden poner ejecutables específicos del dispositivo. Estos archivos son de un Nexus S.
$ ls /system/sbin/system/sbin: No such file or directory
Este directorio no existe en un Nexus S.
$ ls /system/binam
am es el administrador de actividades de Android. Se utiliza para iniciar y detener las actividades de Android (por ejemplo, aplicaciones) desde la línea de comandos. Escriba am por sí mismo para obtener una lista de opciones.
amixaplay
Línea de comandos del reproductor de archivos de audio.
app_processapplypatch
Se utiliza para aplicar parches a los archivos de android.
arec
Línea de comandos del grabador de audio.
audioloopbluetoothd
Demonio BlueTooth
bmgr
Gestor de copias de seguridad – escribe el comando por sí mismo para obtener la documentación.
bootanimation
Dibuja la animación de arranque. Es posible que tenga que reiniciar el teléfono para salir de esto.
brcm_patchram_plusbugreportcat
Copia el contenido de un archivo a la salida estándar.
chmod
Cambia el modo de un archivo (por ejemplo. si se puede leer o escribir.)
chown
Cambiar el propietario de un archivo.
cmp
Comparar dos archivos byte a byte
dalvikvm
La máquina virtual dalvik. (Se utiliza para ejecutar aplicaciones Android.)
date
Imprime la fecha y hora actuales
dbus-daemondd
Convierte y copia un archivo. Por defecto copia la entrada estándar a la salida estándar.
debuggerddexoptdf
Muestra cuánto espacio está libre en los diferentes sistemas de archivos de su dispositivo.
dhcpcddmesgdnsmasqdumpstatedumpsysdvzfsck_msdosgdbservergeteventgetpropgziphciattachhdidifconfig
Muestra la configuración actual de las interfaces de red (IP, dirección MAC, etc)
iftop
Muestra los procesos actuales que utilizan las interfaces de red (arriba, pero para las redes)
imeinputinsmodinstalldioctlioniceiptables
Maneja el firewall
keystorekeystore_clikill
Envía señales a los procesos.
linkerln
Se utiliza para configurar un enlace del sistema de archivos.
loglogcat
Imprime el registro de ejecución de Android.
logwrapperls
Lista archivos.
lsmodlsofmake_ext4fsmediaservermkdir
Hace un directorio.
monkey
Un programa que envía eventos aleatorios, utilizado para probar aplicaciones. (Como tener un mono jugando con el dispositivo.)
mountmtpdmv
Mover un archivo de un directorio a otro. (Sólo en el mismo sistema de archivos. Utiliza «cat a > b» para copiar un archivo entre sistemas de archivos.
nandreadndcnetcfgnetdnetstatnewfs_msdosnotifyomx_testspandpingpmpppdprintenvps
Lista de procesos activos.
qemu-propsqemudracoonradiooptionsreboot
Reinicia el dispositivo.
recordrenicerildrm
Elimina un archivo.
rmdir
Elimina un directorio.
rmmodroutertp_testrun-asschedtestschedtopsdcardsdptoolsendeventserviceservicemanagersetconsolesetpropsetup_fsshshowleasesleepsmdstagefrightstart
Inicia el runtime de Android.
stop
Detener el tiempo de ejecución de Android.
surfaceflingersvcsyncsystem_servertctestid3toolboxtop
Muestra qué procesos están utilizando actualmente la mayor parte del tiempo de la CPU.
umountuptime
Imprime cuánto tiempo ha estado funcionando su dispositivo desde que se inició por última vez.
vdcvmstatvoldwatchpropswipewpa_cliwpa_supplicant$ ls /system/xbinadd-property-tagbtoolcheck-lost+founddexdumpdhdutilhcidumplatencytoplibrankopcontroloprofiledprocmemprocrankrawbuscp
Programa de copia segura. (Se utiliza para copiar archivos a través de la red.)
showmapshowslabsqlite3
Se utiliza para administrar bases de datos SQLite.
strace
Comando de rastreo del sistema – se utiliza para ver qué llamadas al sistema hace un programa.
su
Iniciar un shell con privilegios de root.
#Versiones del Shell de Android
- Android 1.0 utilizaba un shell que no tenía finalización de pestañas ni edición del historial.
- Android 2.3 añadió la edición del historial. Puedes, por ejemplo, usar las flechas arriba/abajo para editar comandos anteriores.
#Otros shells
#Busybox
Busybox es un programa que contiene un shell y un conjunto de utilidades de línea de comandos. Busca en Android Market «Busybox» y deberías encontrar algunas versiones que puedes instalar. El intérprete de comandos Busybox incluye la finalización de pestañas y la edición del historial. Algunas versiones de Busybox para Android no requieren que hagas root a tu teléfono.
#Utilidades de Debian
Puedes instalar el shell y las utilidades completas de Debian. (Debian es una popular distribución de Linux de escritorio.) No conozco los detalles, y puede requerir un teléfono «rooteado». Prueba a buscar en la web «Debian Android install».
#Roms personalizadas
Algunas ROMs personalizadas vienen con sus propios shells y utilidades. Si estás usando una ROM personalizada, revisa su documentación para saber qué hay disponible.