#The Android Shell
Una “shell” è un programma che ascolta l’input della tastiera da un utente ed esegue azioni come diretto dall’utente. I dispositivi Android sono dotati di un semplice programma shell. Questo programma shell è per lo più non documentato. Dato che molte persone sono curiose, ho pensato di scrivere un po’ di documentazione per esso.
Currently this documentation is incomplete, sorry!
##Problemi comuni
La shell integrata ha una gestione degli errori molto limitata. Quando digitate un nome di comando in modo errato, dirà “permesso negato”, anche se il vero problema è che non è riuscito a trovare il comando:
$ dirdir: permission denied <---- this is a misleading error message, should say 'dir: not found'$ ls... listing of current directory
#La variabile PATH
La shell Android eseguirà qualsiasi programma che trova nel suo PATH. Il PATH è una lista di directory separate da due punti (‘:’). Puoi scoprire a cosa è impostato il PATH della tua shell usando il comando integrato echo:
$ echo $PATH/data/local/bin:/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
A seconda della tua shell, potresti vedere un risultato diverso.
#Comandi integrati
Ogni shell ha alcuni comandi integrati. Alcuni comuni comandi integrati sono:
- echo — stampa del testo su stdout.
- set — imposta le variabili di shell
- export — rende le variabili di shell disponibili ai programmi a riga di comando
- cd — cambia la directory corrente.
- pwd — stampa il nome della directory corrente.
#ComandiPer scoprire quali comandi hai a disposizione, usa il comando “ls” su ciascuna delle directory nella variabile PATH.
##Ricerca della documentazione per i comandi di Android.
Molti dei comandi di Android sono basati su comandi standard di Linux (o bsd). Se sei curioso su un comando, a volte puoi imparare come funziona usando il comando “man” su un computer desktop Linux o OSX (Apple Macintosh). La versione Linux o OSX del comando può essere diversa nei dettagli, ma gran parte della documentazione sarà ancora applicabile alla versione Android del comando.
Un’altra fonte di documentazione per le persone senza una macchina Linux o OSX a portata di mano è quella di utilizzare un browser web e usare un motore di ricerca web per cercare il testo “man Linux command-name”.
##Lista dei comandi
Quella che segue è una lista dei comandi che sono presenti su un telefono Nexus S con una build di Android 2.3.3 “user-debug”. Molti di questi comandi non sono presenti su un telefono “utente”. (Mancano da un telefono “utente” perché sono specifici per lo sviluppo o il debug del sistema operativo Android.)
$ ls /data/local/bin/data/local/bin: No such file or directory
Nota che per default non c’è una directory /data/local/bin. Puoi creare questa directory usando il comando “mkdir” se vuoi.
$ ls /sbinopendir failed, Permission denied
La directory /sbin esiste, ma non hai il permesso di accedervi. Avete bisogno dell’accesso come root. Se hai un telefono sviluppatore, o comunque hai accesso come root al tuo telefono, puoi vedere cosa c’è in questa directory.
$ su# ls /sbinueventdadbd# exit$
Nota che il prompt della shell cambia da ‘$’ a ‘#’ per indicare che hai accesso come root.
Nota anche che nessuno dei comandi /sbin è utile alla shell — i file adb e ueventd sono programmi ‘daemon’ usati per implementare il programma Android Debugger “adb” che è usato dagli sviluppatori.
$ ls /vendor/bingpsdpvrsrvinit
Vendor/bin è dove i fornitori di dispositivi possono mettere gli eseguibili specifici del dispositivo. Questi file sono di un Nexus S.
$ ls /system/sbin/system/sbin: No such file or directory
Questa directory non esiste su un Nexus S.
$ ls /system/binam
am è l’Android Activity Manager. È usato per avviare e fermare le attività di Android (ad esempio le applicazioni) dalla linea di comando. Digita am da solo per ottenere un elenco di opzioni.
amixaplay
Lettore di file audio da linea di comando.
app_processapplypatch
Usato per applicare patch ai file Android.
arec
Registratore audio da linea di comando.
audioloopbluetoothd
Demon BlueTooth
bmgr
Gestore di backup – digita il comando da solo per ottenere la documentazione.
bootanimation
Disegna l’animazione di avvio. Potrebbe essere necessario resettare il telefono per uscirne.
brcm_patchram_plusbugreportcat
Copia il contenuto di un file sullo standard output.
chmod
Cambia la modalità di un file (ad es. se può essere letto o scritto.)
chown
Modificare il proprietario di un file.
cmp
Compara due file byte per byte
dalvikvm
La macchina virtuale dalvik. (Utilizzata per eseguire applicazioni Android.)
date
Stampa la data e l’ora corrente
dbus-daemondd
Converte e copia un file. Per impostazione predefinita copia standard in a standard out.
debuggerddexoptdf
Mostra quanto spazio è libero su diversi file system sul tuo dispositivo.
dhcpcddmesgdnsmasqdumpstatedumpsysdvzfsck_msdosgdbservergeteventgetpropgziphciattachhdidifconfig
Mostra la configurazione corrente delle interfacce di rete (IP, indirizzo MAC, ecc.)
iftop
Mostra i processi correnti che utilizzano le interfacce di rete (in alto, ma per le reti)
imeinputinsmodinstalldioctlioniceiptables
Gestisci il firewall
keystorekeystore_clikill
Invia segnali ai processi.
linkerln
Utilizzato per impostare un collegamento al file system.
loglogcat
Stampa il log di runtime di Android.
logwrapperls
Lista dei file.
lsmodlsofmake_ext4fsmediaservermkdir
Crea una directory.
monkey
Un programma che invia eventi casuali, usato per testare applicazioni. (Come avere una scimmia che gioca con il dispositivo.)
mountmtpdmv
Spostare un file da una directory all’altra. (Solo sullo stesso file system. Usa “cat a > b” per copiare un file tra file system.
nandreadndcnetcfgnetdnetstatnewfs_msdosnotifyomx_testspandpingpmpppdprintenvps
Lista dei processi attivi.
qemu-propsqemudracoonradiooptionsreboot
Riavvia il dispositivo.
recordrenicerildrm
Rimuovi un file.
rmdir
Rimuovi una directory.
rmmodroutertp_testrun-asschedtestschedtopsdcardsdptoolsendeventserviceservicemanagersetconsolesetpropsetup_fsshshowleasesleepsmdstagefrightstart
Avvia il runtime Android.
stop
Arresta il runtime di Android.
surfaceflingersvcsyncsystem_servertctestid3toolboxtop
Mostra quali processi stanno attualmente utilizzando la maggior parte del tempo della CPU.
umountuptime
Stampa di quanto tempo il dispositivo è stato in esecuzione dall’ultimo avvio.
vdcvmstatvoldwatchpropswipewpa_cliwpa_supplicant$ ls /system/xbinadd-property-tagbtoolcheck-lost+founddexdumpdhdutilhcidumplatencytoplibrankopcontroloprofiledprocmemprocrankrawbuscp
Programma di copia sicura. (Utilizzato per copiare i file in rete.)
showmapshowslabsqlite3
Utilizzato per amministrare i database SQLite.
strace
Comando di tracciamento del sistema – si usa per vedere quali chiamate di sistema fa un programma.
su
Avvia una shell con i privilegi di root.
#Versioni della Shell di Android
- Android 1.0 usava una shell che non aveva il completamento delle schede o la modifica della cronologia.
- Android 2.3 ha aggiunto la modifica della cronologia. Puoi per esempio usare le frecce su/giù per modificare i comandi precedenti.
#Altre shell
#Busybox
Busybox è un programma che contiene una shell e una serie di utilità a linea di comando. Cerca su Android Market “Busybox” e dovresti trovare alcune versioni che puoi installare. La shell di Busybox include il completamento delle schede e la modifica della cronologia. Alcune versioni di Busybox per Android non richiedono il root del telefono.
#Debian utilities
È possibile installare la shell completa Debian e le utility. (Debian è una popolare distribuzione desktop di Linux.) Non conosco i dettagli, e potrebbe richiedere un telefono “rootato”. Prova a fare una ricerca sul web per “Debian Android install”.
#ROM personalizzate
Alcune ROM personalizzate hanno le loro shell e utility. Se stai usando una ROM personalizzata, controlla la sua documentazione per scoprire cosa è disponibile.
#Se stai usando una ROM personalizzata, controlla la sua documentazione per scoprire cosa è disponibile.