#The Android Shell
En “shell” er et program, der lytter til tastaturinput fra en bruger og udfører handlinger som anvist af brugeren. Android-enheder leveres med et simpelt shell-program. Dette shellprogram er for det meste udokumenteret. Da mange mennesker er nysgerrige på det, tænkte jeg, at jeg ville skrive noget dokumentation for det.
Currently this documentation is incomplete, sorry!
###Fælles problemer
Den indbyggede shell har meget begrænset fejlhåndtering. Når du skriver et kommandonavn forkert, siger den “permission denied” (tilladelse nægtet), selv om det virkelige problem er, at den ikke kunne finde kommandoen:
$ dirdir: permission denied <---- this is a misleading error message, should say 'dir: not found'$ ls... listing of current directory
#PATH-variablen
Android-shell’en vil køre ethvert program, den finder i sin PATH. PATH er en liste af mapper med kolon (‘:’) adskilt fra hinanden. Du kan finde ud af, hvad din shell’s PATH er indstillet til ved at bruge den indbyggede echo kommando:
$ echo $PATH/data/local/bin:/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
Afhængigt af din shell kan du se et andet resultat.
#Inbyggede kommandoer
Alle shell’er har nogle få indbyggede kommandoer. Nogle almindelige indbyggede kommandoer er:
- echo — udskriver tekst til stdout.
- set — indstiller shell-variabler
- export — gør shell-variabler tilgængelige for kommandolinjeprogrammer
- cd — ændrer den aktuelle mappe.
- pwd — udskriver navnet på den aktuelle mappe.
#KommandoerFor at finde ud af, hvilke kommandoer du har til rådighed, skal du bruge kommandoen “ls” på hver af mapperne i PATH-variablen.
##Søge dokumentation for Android-kommandoerne.
Mange af Android-kommandoerne er baseret på standardkommandoer i Linux (eller bsd). Hvis du er nysgerrig på en kommando, kan du nogle gange lære, hvordan den fungerer, ved at bruge kommandoen “man” på en stationær Linux- eller OSX-computer (Apple Macintosh-computer). Linux- eller OSX-versionen af kommandoen kan være anderledes i detaljer, men meget af dokumentationen vil stadig gælde for Android-versionen af kommandoen.
En anden kilde til dokumentation for folk, der ikke har en Linux- eller OSX-maskine ved hånden, er at bruge en webbrowser og bruge en web-søgemaskine til at søge efter teksten: “man Linux command-name”.
###Liste over kommandoer
Det følgende er en liste over de kommandoer, der findes på en Nexus S-telefon, der kører en Android 2.3.3.3 “user-debug” build. Mange af disse kommandoer er ikke til stede på en “bruger”-telefon. (De mangler på en “bruger”-telefon, fordi de er specifikke for udvikling eller fejlfinding af Android-operativsystemet.)
$ ls /data/local/bin/data/local/bin: No such file or directory
Bemærk, at der som standard ikke er nogen /data/local/bin-mappe. Du kan oprette denne mappe ved hjælp af kommandoen “mkdir”, hvis du vil.
$ ls /sbinopendir failed, Permission denied
Mappen /sbin findes, men du har ikke tilladelse til at få adgang til den. Du skal have root-adgang. Hvis du har en udvikler-telefon eller på anden måde har root-adgang til din telefon, kan du se, hvad der er i denne mappe.
$ su# ls /sbinueventdadbd# exit$
Bemærk, at shellprompten ændres fra et “$” til et “#” for at indikere, at du har root-adgang.
Bemærk også, at ingen af /sbin-kommandoerne er nyttige for shell’en – filerne adb og ueventd er ‘dæmon’-programmer, der bruges til at implementere Android Debugger-programmet “adb”, der bruges af udviklere.
$ ls /vendor/bingpsdpvrsrvinit
Vendor/bin er der, hvor enhedsleverandører kan lægge enhedsspecifikke eksekverbare programmer. Disse filer er fra en Nexus S.
$ ls /system/sbin/system/sbin: No such file or directory
Denne mappe findes ikke på en Nexus S.
$ ls /system/binam
am er Android Activity Manager. Den bruges til at starte og stoppe Android-aktiviteter (f.eks. programmer) fra kommandolinjen. Skriv am alene for at få en liste over muligheder.
amixaplay
Kommandolinjeafspiller for lydfiler.
app_processapplypatch
Bruges til at anvende patches til Android-filer.
arec
Kommandolinjeafspiller for lydfiler.
audioloopbluetoothd
BlueTooth daemon
bmgr
Backup manager – skriv kommando af sig selv for at få dokumentation.
bootanimation
Tegner opstartsanimation. Du skal muligvis nulstille telefonen for at komme ud af dette.
brcm_patchram_plusbugreportcat
Kopier indholdet af en fil til standardudgang.
chmod
Ændre tilstanden for en fil (f.eks. om den kan læses eller skrives.)
chown
Ændre ejeren af en fil.
cmp
Sammenligne to filer byte-for-byte
dalvikvm
Dalvik virtual machine. (Bruges til at køre Android-programmer.)
date
Udskriver den aktuelle dato og det aktuelle klokkeslæt
dbus-daemondd
Konverter og kopier en fil. Kopierer som standard standard in til standard out.
debuggerddexoptdf
Viser, hvor meget plads der er ledig på forskellige filsystemer på din enhed.
dhcpcddmesgdnsmasqdumpstatedumpsysdvzfsck_msdosgdbservergeteventgetpropgziphciattachhdidifconfig
Viser den aktuelle konfiguration af netværksgrænseflader (IP, MAC-adresse osv.)
iftop
Viser de aktuelle processer, der bruger netværksgrænsefladerne (øverst, men for netværk)
imeinputinsmodinstalldioctlioniceiptables
Håndter firewallen
keystorekeystore_clikill
Sender signaler til processer.
linkerln
Bruges til at oprette en filsystemforbindelse.
loglogcat
Udskriver Android-køreloggen.
logwrapperls
Lister filer.
lsmodlsofmake_ext4fsmediaservermkdir
Opret en mappe.
monkey
Et program, der sender tilfældige hændelser, bruges til at teste programmer. (Som at have en abe til at lege med enheden.)
mountmtpdmv
Flytter en fil fra en mappe til en anden. (Kun på det samme filsystem. Brug “cat a > b” til at kopiere en fil mellem filsystemer.
nandreadndcnetcfgnetdnetstatnewfs_msdosnotifyomx_testspandpingpmpppdprintenvps
Liste over aktive processer.
qemu-propsqemudracoonradiooptionsreboot
Reboot enheden.
recordrenicerildrm
Fjernelse af en fil.
rmdir
Fjernelse af en mappe.
rmmodroutertp_testrun-asschedtestschedtopsdcardsdptoolsendeventserviceservicemanagersetconsolesetpropsetup_fsshshowleasesleepsmdstagefrightstart
Start Android-køretid.
stop
Stopper Android-køretiden.
surfaceflingersvcsyncsystem_servertctestid3toolboxtop
Viser, hvilke processer der i øjeblikket bruger mest CPU-tid.
umountuptime
Udskriver, hvor længe enheden har kørt, siden den sidst blev startet op.
vdcvmstatvoldwatchpropswipewpa_cliwpa_supplicant$ ls /system/xbinadd-property-tagbtoolcheck-lost+founddexdumpdhdutilhcidumplatencytoplibrankopcontroloprofiledprocmemprocrankrawbuscp
Sikkert kopiprogram. (Bruges til at kopiere filer over netværket.)
showmapshowslabsqlite3
Bruges til at administrere SQLite-databaser.
strace
Systemtrace-kommando – bruges til at se, hvilke systemkald et program foretager.
su
Start en shell med root-privilegier.
#Versioner af Android Shell
- Android 1.0 brugte en shell, der ikke havde fanebeskrivelse eller historikredigering.
- Android 2.3 tilføjede historikredigering. Du kan f.eks. bruge pil op/ned-pilene til at redigere tidligere kommandoer.
#Andre skaller
#Busybox
Busybox er et program, der indeholder en skal og et sæt kommandolinjeværktøjer. Søg på Android Market efter “Busybox”, og du bør finde nogle versioner, som du kan installere. Busybox-shell’en indeholder fanefuldstænding og historikredigering. Nogle versioner af Busybox til Android kræver ikke, at du rooter din telefon.
#Debian utilities
Du kan installere hele Debians shell og hjælpeprogrammer. (Debian er en populær desktop Linux-distribution.) Jeg kender ikke detaljerne, og det kræver muligvis en “rooted” telefon. Prøv en søgning på nettet efter “Debian Android install”.
#Brugerdefinerede ROM’er
Nogle brugerdefinerede ROM’er kommer med deres egne skaller og hjælpeprogrammer. Hvis du bruger en brugerdefineret ROM, skal du tjekke dens dokumentation for at finde ud af, hvad der er tilgængeligt.