#The Android Shell
A “shell” é um programa que escuta a entrada do teclado de um usuário e executa ações conforme as instruções do usuário. Os dispositivos Android vêm com um programa shell simples. Este programa shell é na sua maioria indocumentado. Como muitas pessoas estão curiosas sobre ele eu pensei em escrever alguma documentação para ele.
Currently this documentation is incomplete, sorry!
##Problemas comuns
A shell incorporada tem um tratamento de erros muito limitado. Quando você digita um nome de comando incorretamente ele vai dizer “permissão negada”, mesmo que o verdadeiro problema seja que ele não conseguiu encontrar o comando:
$ dirdir: permission denied <---- this is a misleading error message, should say 'dir: not found'$ ls... listing of current directory
#A variável PATH
A shell do Android vai executar qualquer programa que encontrar no seu PATH. O PATH é uma lista separada de diretórios com dois-pontos (‘:’). Você pode encontrar o PATH da sua shell usando o comando echo embutido:
$ echo $PATH/data/local/bin:/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
Dependente da sua shell, você pode ver um resultado diferente.
#Incluído em Comandos
Cada shell tem alguns comandos embutidos. Alguns comandos embutidos comuns são:
- echo — imprime texto para stdout.
- set — define variáveis shell
- export — torna variáveis shell disponíveis para programas de linha de comando
- cd — muda o diretório atual.
- pwd — imprime o nome do diretório atual.
#ComandosPara descobrir quais comandos você tem disponíveis, use o comando “ls” em cada um dos diretórios na variável PATH.
##Localizar documentação para os comandos Android.
Muitos dos comandos Android são baseados em comandos padrão do Linux (ou bsd). Se você está curioso sobre um comando, às vezes você pode aprender como ele funciona usando o comando “man” em um computador desktop Linux ou OSX (Apple Macintosh). A versão Linux ou OSX do comando pode ser diferente em detalhes, mas grande parte da documentação ainda se aplicará à versão Android do comando.
Uma outra fonte de documentação para pessoas sem uma máquina Linux ou OSX útil é usar um navegador web e usar um mecanismo de busca web para pesquisar o texto: “man Linux command-name”.
##Lista de comandos
A seguir está uma lista dos comandos que estão presentes em um telefone Nexus S rodando uma compilação “user-debug” do Android 2.3.3. Muitos destes comandos não estão presentes em um telefone “usuário”. (Eles estão faltando em um telefone “usuário” porque eles são específicos para desenvolver ou depurar o sistema operacional Android.)
$ ls /data/local/bin/data/local/bin: No such file or directory
Note que por padrão não há diretório /data/local/bin. Você pode criar este diretório usando o comando “mkdir” se quiser.
$ ls /sbinopendir failed, Permission denied
O diretório /sbin existe, mas você não tem permissão para acessá-lo. Você precisa de acesso root. Se você tem um telefone desenvolvedor, ou tem acesso root ao seu telefone você pode ver o que está neste diretório.
$ su# ls /sbinueventdadbd# exit$
Note que o prompt da shell muda de um ‘$’ para um ‘#’ para indicar que você tem acesso root.
Note também que nenhum dos comandos /sbin são úteis para a shell — os arquivos adb e ueventd são programas ‘daemon’ usados para implementar o programa “adb” do depurador do Android que é usado pelos desenvolvedores.
$ ls /vendor/bingpsdpvrsrvinit
Vendor/bin é onde os vendedores de dispositivos podem colocar executáveis específicos do dispositivo. Estes arquivos são de um Nexus S.
$ ls /system/sbin/system/sbin: No such file or directory
Este diretório não existe em um Nexus S.
$ ls /system/binam
am é o Gerenciador de Atividades do Android. Ele é usado para iniciar e parar atividades do Android (por exemplo, aplicativos) a partir da linha de comando. Digite am por si mesmo para obter uma lista de opções.
>
amixaplay
Pleitor de arquivos de áudio de linha de comando.
app_processapplypatch
Utilizado para aplicar patches em arquivos andróides.
arec
Gravador de áudio de linha de comando.
audioloopbluetoothd
Daemon de BlueTooth
bmgr
Gerenciador de Backup – tipo de comando por si só para obter documentação.
bootanimation
Drava a animação de arranque. Você pode ter que reiniciar seu telefone para sair disto.
brcm_patchram_plusbugreportcat
Copiar o conteúdo de um arquivo para a saída padrão.
chmod
Mudar o modo de um arquivo (ex. se pode ser lido ou escrito.)
chown
Alterar o dono de um ficheiro.
cmp
Comparar dois ficheiros byte-a-byte
dalvikvm
A máquina virtual dalvik. (Utilizado para executar aplicações Android.)
date
Imprime a data e hora actuais
dbus-daemondd
Converter e copiar um ficheiro. Por padrão copia de padrão dentro para fora.
debuggerddexoptdf
Mostra quanto espaço é livre em diferentes sistemas de arquivos em seu dispositivo.
dhcpcddmesgdnsmasqdumpstatedumpsysdvzfsck_msdosgdbservergeteventgetpropgziphciattachhdidifconfig
Mostra a configuração atual das interfaces de rede (IP, endereço MAC, etc)
iftop
Mostra os processos atuais usando as interfaces de rede (topo, mas para redes)
imeinputinsmodinstalldioctlioniceiptables
Gerenciar o firewall
keystorekeystore_clikill
Enviar sinais para processos.
linkerln
Usado para configurar um link de sistema de arquivos.
loglogcat
Imprime o log de tempo de execução do Android.
logwrapperls
Lista arquivos.
lsmodlsofmake_ext4fsmediaservermkdir
Faça um diretório.
monkey
Um programa que envia eventos aleatórios, usado para testar aplicativos. (Como ter um macaco a brincar com o dispositivo.)
mountmtpdmv
Mover um ficheiro de um directório para outro. (Somente no mesmo sistema de arquivos. Use “cat a > b” para copiar um ficheiro entre sistemas de ficheiros.
nandreadndcnetcfgnetdnetstatnewfs_msdosnotifyomx_testspandpingpmpppdprintenvps
Lista de processos activos.
qemu-propsqemudracoonradiooptionsreboot
Reboot the device.
recordrenicerildrm
Remover um ficheiro.
rmdir
Remover um directório.
rmmodroutertp_testrun-asschedtestschedtopsdcardsdptoolsendeventserviceservicemanagersetconsolesetpropsetup_fsshshowleasesleepsmdstagefrightstart
Inicia o tempo de execução do Android.
stop
Para o tempo de execução do Android.
surfaceflingersvcsyncsystem_servertctestid3toolboxtop
Mostra quais os processos que estão atualmente usando o maior tempo de CPU.
umountuptime
Imprime há quanto tempo o seu dispositivo está rodando desde a última inicialização.
vdcvmstatvoldwatchpropswipewpa_cliwpa_supplicant$ ls /system/xbinadd-property-tagbtoolcheck-lost+founddexdumpdhdutilhcidumplatencytoplibrankopcontroloprofiledprocmemprocrankrawbuscp
Seguro programa de cópia. (Usado para copiar arquivos pela rede.)
showmapshowslabsqlite3
Usado para administrar bancos de dados SQLite.
strace
Comando System trace – use para ver o que o sistema chama de programa.
su
Inicie uma shell com privilégios de root.
#Versões da shell do Android
- Android 1.0 usou uma shell que não tinha completamento de tabulação ou edição de histórico.
- Android 2.3 adicionou edição de histórico. Você pode por exemplo usar as setas para cima/baixo para editar comandos anteriores.
#Outros shells
#Busybox
Busybox é um programa que contém um shell e um conjunto de utilitários de linha de comando. Procure no Android Market por “Busybox” e você deve encontrar algumas versões que você pode instalar. A shell do Busybox inclui preenchimento de tabulações e edição de histórico. Algumas versões do Busybox para o Android não requerem que você faça o root do seu telefone.
#Utilitários Debian
Você pode instalar a shell e utilitários completos do Debian. (Debian é uma popular distribuição desktop Linux.) Eu não sei os detalhes, e pode requerer um telefone “enraizado”. Tente uma busca web por “Debian Android install”.
#ROMs Personalizadas
algumas ROMs personalizadas vêm com os seus próprios shells e utilitários. Se você estiver usando uma ROM personalizada, verifique sua documentação para descobrir o que está disponível.