#The Android Shell
Ett ”skal” är ett program som lyssnar på tangentbordsinmatning från en användare och utför åtgärder enligt användarens anvisningar. Android-enheter levereras med ett enkelt skalprogram. Detta skalprogram är mestadels odokumenterat. Eftersom många är nyfikna på det tänkte jag skriva lite dokumentation för det.
Currently this documentation is incomplete, sorry!
##Gemensamma problem
Det inbyggda skalet har mycket begränsad felhantering. När du skriver ett kommandonamn felaktigt kommer det att säga ”permission denied”, även om det verkliga problemet är att det inte kunde hitta kommandot:
$ dirdir: permission denied <---- this is a misleading error message, should say 'dir: not found'$ ls... listing of current directory
#PATH-variabeln
Android-skalet kommer att köra alla program som finns i dess PATH. PATH är en lista med kataloger separerade med kolon (’:’). Du kan ta reda på vad ditt skals PATH är inställt på genom att använda det inbyggda kommandot echo:
$ echo $PATH/data/local/bin:/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
Beroende på ditt skal kan du få ett annat resultat.
#Inbyggda kommandon
Varje skal har några få inbyggda kommandon. Några vanliga inbyggda kommandon är:
- echo — skriver ut text till stdout.
- set — ställer in skalvariabler
- export — gör skalvariabler tillgängliga för kommandoradsprogram
- cd — ändrar den aktuella katalogen.
- pwd — skriver ut namnet på den aktuella katalogen.
#KommandonFör att ta reda på vilka kommandon du har tillgång till använder du kommandot ”ls” på varje katalog i PATH-variabeln.
###Finnande av dokumentation för Android-kommandon.
Många av Android-kommandona är baserade på standardkommandon i Linux (eller bsd). Om du är nyfiken på ett kommando kan du ibland lära dig hur det fungerar genom att använda kommandot ”man” på en stationär Linux- eller OSX-dator (Apple Macintosh). Linux- eller OSX-versionen av kommandot kan skilja sig i detaljer, men mycket av dokumentationen gäller fortfarande för Android-versionen av kommandot.
En annan källa till dokumentation för personer som inte har en Linux- eller OSX-maskin till hands är att använda en webbläsare och använda en webbsökmotor för att söka efter texten: ”man Linux command-name”.
##Lista över kommandon
Nedan följer en lista över de kommandon som finns på en Nexus S-telefon som kör Android 2.3.3.3 ”user-debug” build. Många av dessa kommandon finns inte på en ”user”-telefon. (De saknas på en ”user”-telefon eftersom de är specifika för utveckling eller felsökning av operativsystemet Android.)
$ ls /data/local/bin/data/local/bin: No such file or directory
Bemärk att det som standard inte finns någon /data/local/bin-katalog. Du kan skapa denna katalog med kommandot ”mkdir” om du vill.
$ ls /sbinopendir failed, Permission denied
Katalogen /sbin finns, men du har inte behörighet att komma åt den. Du behöver root-åtkomst. Om du har en utvecklartelefon eller på annat sätt har rotåtkomst till din telefon kan du se vad som finns i den här katalogen.
$ su# ls /sbinueventdadbd# exit$
Bemärk att skalprompten ändras från ett ”$” till ett ”#” för att indikera att du har rotåtkomst.
Bemärk också att ingen av kommandona /sbin är användbara för skalet – filerna adb och ueventd är ”daemon”-program som används för att implementera programmet Android Debugger ”adb” som används av utvecklare.
$ ls /vendor/bingpsdpvrsrvinit
Vendor/bin är den plats där enhetsleverantörer kan lägga enhetsspecifika körbara program. Dessa filer kommer från en Nexus S.
$ ls /system/sbin/system/sbin: No such file or directory
Denna katalog finns inte på en Nexus S.
$ ls /system/binam
am är Android Activity Manager. Den används för att starta och stoppa Android-aktiviteter (t.ex. program) från kommandoraden. Skriv am för sig själv för att få en lista med alternativ.
amixaplay
Kommandoradspelare för ljudfiler.
app_processapplypatch
Används för att tillämpa patchar på androidfiler.
arec
Kommandoradspelare för ljudfiler.
audioloopbluetoothd
BlueTooth daemon
bmgr
Backup manager – skriv kommandot självt för att få fram dokumentation.
bootanimation
Ritar upp startanimationen. Du kan behöva nollställa telefonen för att komma ur detta.
brcm_patchram_plusbugreportcat
Kopiera innehållet i en fil till standardutgången.
chmod
Ändra läget för en fil (t.ex. om den kan läsas eller skrivas.)
chown
Ändra ägaren till en fil.
cmp
Genom att jämföra två filer byte för byte
dalvikvm
Dalvik virtual machine. (Används för att köra Android-program.)
date
Utskrift av aktuellt datum och tid
dbus-daemondd
Konvertera och kopiera en fil. Kopierar som standard standard in till standard out.
debuggerddexoptdf
Visar hur mycket utrymme som är ledigt i olika filsystem på enheten.
dhcpcddmesgdnsmasqdumpstatedumpsysdvzfsck_msdosgdbservergeteventgetpropgziphciattachhdidifconfig
Visar aktuell konfiguration av nätverksgränssnitt (IP, MAC-adress etc)
iftop
Visar aktuella processer som använder nätverksgränssnitten (överst, men för nätverk)
imeinputinsmodinstalldioctlioniceiptables
Hantera brandväggen
keystorekeystore_clikill
Sänd signaler till processer.
linkerln
Används för att upprätta en filsystemlänk.
loglogcat
Utskrift av Androids körtidslogg.
logwrapperls
Listar upp filer.
lsmodlsofmake_ext4fsmediaservermkdir
Skapa en katalog.
monkey
Ett program som skickar slumpmässiga händelser, används för att testa program. (Som att ha en apa som leker med enheten.)
mountmtpdmv
Förflyttar en fil från en katalog till en annan. (Endast på samma filsystem. Använd ”cat a > b” för att kopiera en fil mellan filsystem.
nandreadndcnetcfgnetdnetstatnewfs_msdosnotifyomx_testspandpingpmpppdprintenvps
Lista över aktiva processer.
qemu-propsqemudracoonradiooptionsreboot
Reboota enheten.
recordrenicerildrm
Släpp en fil.
rmdir
Släpp en katalog.
rmmodroutertp_testrun-asschedtestschedtopsdcardsdptoolsendeventserviceservicemanagersetconsolesetpropsetup_fsshshowleasesleepsmdstagefrightstart
Startar Android-körtiden.
stop
Stoppar Android-körtiden.
surfaceflingersvcsyncsystem_servertctestid3toolboxtop
Visar vilka processer som för närvarande använder mest CPU-tid.
umountuptime
Utskrift av hur länge enheten har körts sedan den senast startades upp.
vdcvmstatvoldwatchpropswipewpa_cliwpa_supplicant$ ls /system/xbinadd-property-tagbtoolcheck-lost+founddexdumpdhdutilhcidumplatencytoplibrankopcontroloprofiledprocmemprocrankrawbuscp
Säkert kopieringsprogram. (Används för att kopiera filer över nätverket.)
showmapshowslabsqlite3
Används för att administrera SQLite-databaser.
strace
Systemspårningskommando – används för att se vilka systemanrop ett program gör.
su
Starta ett skal med rootprivilegier.
#Versioner av Android Shell
- Android 1.0 använde ett skal som inte hade någon tabkomplettering eller historieredigering.
- Android 2.3 lade till historieredigering. Du kan till exempel använda pilarna uppåt/nedåt för att redigera tidigare kommandon.
#Andra skal
#Busybox
Busybox är ett program som innehåller ett skal och en uppsättning kommandoradsverktyg. Sök på Android Market efter ”Busybox” så bör du hitta några versioner som du kan installera. Busybox skal innehåller tabkomplettering och redigering av historik. Vissa versioner av Busybox för Android kräver inte att du rootar telefonen.
#Debians verktyg
Du kan installera hela Debians skal och verktyg. (Debian är en populär Linuxdistribution för skrivbordssystem.) Jag känner inte till detaljerna, och det kan kräva en ”rotad” telefon. Försök att söka på webben efter ”Debian Android install”.
#Anpassade ROMs
En del anpassade ROMs kommer med egna skal och verktyg. Om du använder ett anpassat ROM, kontrollera dess dokumentation för att ta reda på vad som finns tillgängligt.