#The Android Shell
„Shell“ je program, který naslouchá vstupu z klávesnice od uživatele a provádí akce podle jeho pokynů. Zařízení se systémem Android jsou dodávána s jednoduchým programem shell. Tento program shell je většinou nedokumentovaný. Protože se o něj mnoho lidí zajímá, napadlo mě sepsat k němu dokumentaci.
Currently this documentation is incomplete, sorry!
##Obvyklé problémy
Vestavěný shell má velmi omezené zpracování chyb. Když špatně zadáte název příkazu, řekne „oprávnění odepřeno“, i když skutečný problém spočívá v tom, že příkaz nemohl najít:
$ dirdir: permission denied <---- this is a misleading error message, should say 'dir: not found'$ ls... listing of current directory
#Proměnná PATH
Povrch Androidu spustí jakýkoli program, který najde ve svém PATH. PATH je seznam adresářů oddělených dvojtečkou (‚:‘). Nastavení PATH vašeho shellu můžete zjistit pomocí vestavěného příkazu echo:
$ echo $PATH/data/local/bin:/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
V závislosti na vašem shellu se může zobrazit jiný výsledek.
#Vestavěné příkazy
Každý shell má několik vestavěných příkazů. Některé běžné vestavěné příkazy jsou:
- echo — vypíše text na stdout.
- set — nastaví proměnné shellu
- export — zpřístupní proměnné shellu programům příkazového řádku
- cd — změní aktuální adresář.
- pwd — vypíše název aktuálního adresáře.
#PříkazyChcete-li zjistit, jaké příkazy máte k dispozici, použijte příkaz „ls“ pro každý z adresářů v proměnné PATH.
##Nalezení dokumentace k příkazům systému Android.
Mnoho příkazů systému Android vychází ze standardních příkazů systému Linux (nebo bsd). Pokud vás nějaký příkaz zajímá, můžete se někdy dozvědět, jak funguje, pomocí příkazu „man“ na stolním počítači se systémem Linux nebo OSX (Apple Macintosh). Verze příkazu pro Linux nebo OSX se může v detailech lišit, ale většina dokumentace bude stále platit pro verzi příkazu pro Android.
Dalším zdrojem dokumentace pro lidi, kteří nemají po ruce počítač s Linuxem nebo OSX, je použití webového prohlížeče a vyhledání textu pomocí webového vyhledávače: „
##Seznam příkazů
Následující text je seznam příkazů, které jsou přítomny v telefonu Nexus S se systémem Android 2.3.3 „user-debug“. Mnoho z těchto příkazů není v „uživatelském“ telefonu přítomno. (V „uživatelském“ telefonu chybí, protože jsou specifické pro vývoj nebo ladění operačního systému Android.)
$ ls /data/local/bin/data/local/bin: No such file or directory
Všimněte si, že ve výchozím nastavení není adresář /data/local/bin. Pokud chcete, můžete tento adresář vytvořit pomocí příkazu „mkdir“.
$ ls /sbinopendir failed, Permission denied
Adresář /sbin existuje, ale nemáte k němu přístupová práva. Potřebujete práva roota. Pokud máte telefon pro vývojáře nebo jinak máte k telefonu přístup root, můžete se podívat, co je v tomto adresáři.
$ su# ls /sbinueventdadbd# exit$
Všimněte si, že se výzva shellu změní z „$“ na „#“, což znamená, že máte přístup root.
Všimněte si také, že ani jeden z příkazů /sbin není pro shell užitečný – soubory adb a ueventd jsou „démonské“ programy používané k implementaci programu Android Debugger „adb“, který používají vývojáři.
$ ls /vendor/bingpsdpvrsrvinit
Vendor/bin je místo, kam mohou výrobci zařízení umístit spustitelné soubory specifické pro dané zařízení. Tyto soubory pocházejí ze zařízení Nexus S.
$ ls /system/sbin/system/sbin: No such file or directory
Tento adresář v zařízení Nexus S neexistuje.
$ ls /system/binam
am je správce aktivit systému Android. Slouží ke spouštění a ukončování aktivit systému Android (např. aplikací) zpříkazového řádku. Samotným zadáním am získáte seznam možností.
amixaplay
Přehrávač zvukových souborů z příkazového řádku.
app_processapplypatch
Slouží k aplikaci záplat na soubory Android.
arec
Záznamník zvuku z příkazového řádku.
audioloopbluetoothd
Démon BlueTooth
bmgr
Správce zálohování – zadáním příkazu sám získá dokumentaci.
bootanimation
Kreslí bootovací animaci. Možná budete muset telefon resetovat, abyste se z toho dostali.
brcm_patchram_plusbugreportcat
Kopírování obsahu souboru na standardní výstup.
chmod
Změna režimu souboru (např. zda jej lze číst nebo zapisovat).
chown
Změnit vlastníka souboru.
cmp
Porovnat dva soubory bajt po bajtu
dalvikvm
Virtuální stroj dalvik. (Slouží ke spouštění aplikací pro systém Android.)
date
Vytiskne aktuální datum a čas
dbus-daemondd
Konvertuje a kopíruje soubor. Ve výchozím nastavení kopíruje standardní vstup do standardního výstupu.
debuggerddexoptdf
Zobrazuje, kolik místa je volného v různých souborových systémech v zařízení.
dhcpcddmesgdnsmasqdumpstatedumpsysdvzfsck_msdosgdbservergeteventgetpropgziphciattachhdidifconfig
Zobrazuje aktuální konfiguraci síťových rozhraní (IP, MAC adresa atd.)
iftop
Zobrazuje aktuální procesy používající síťová rozhraní (nahoře, ale pro sítě)
imeinputinsmodinstalldioctlioniceiptables
Správa firewallu
keystorekeystore_clikill
Posílání signálů procesům.
linkerln
Slouží k nastavení propojení souborového systému.
loglogcat
Vytiskne protokol běhu systému Android.
logwrapperls
Seznam souborů.
lsmodlsofmake_ext4fsmediaservermkdir
Vytvoří adresář.
monkey
Program, který odesílá náhodné události, slouží k testování aplikací. (Jako když si se zařízením hraje opice.)
mountmtpdmv
Přesun souboru z jednoho adresáře do druhého. (Pouze ve stejném souborovém systému. Pro kopírování souboru mezi souborovými systémy použijte příkaz „cat a > b“.
nandreadndcnetcfgnetdnetstatnewfs_msdosnotifyomx_testspandpingpmpppdprintenvps
Seznam aktivních procesů.
qemu-propsqemudracoonradiooptionsreboot
Spuštění zařízení.
recordrenicerildrm
Odstranění souboru.
rmdir
Odstranění adresáře.
rmmodroutertp_testrun-asschedtestschedtopsdcardsdptoolsendeventserviceservicemanagersetconsolesetpropsetup_fsshshowleasesleepsmdstagefrightstart
Spuštění běhu systému Android.
stop
Zastaví běh systému Android.
surfaceflingersvcsyncsystem_servertctestid3toolboxtop
Zobrazí, které procesy aktuálně využívají nejvíce času procesoru.
umountuptime
Vypíše, jak dlouho je zařízení spuštěno od posledního spuštění.
vdcvmstatvoldwatchpropswipewpa_cliwpa_supplicant$ ls /system/xbinadd-property-tagbtoolcheck-lost+founddexdumpdhdutilhcidumplatencytoplibrankopcontroloprofiledprocmemprocrankrawbuscp
Zabezpečení kopírování programu. (Slouží ke kopírování souborů po síti.)
showmapshowslabsqlite3
Slouží ke správě databází SQLite.
strace
Příkaz pro sledování systému – slouží k zjištění, jaká systémová volání program provádí.
su
Spustit shell s právy roota.
#Verze shellu Androidu
- Android 1.0 používal shell, který neměl doplňování karet ani editaci historie.
- Android 2.3 přidal editaci historie. Pomocí šipek nahoru/dolů můžete například upravovat předchozí příkazy.
#Další shelly
#Busybox
Busybox je program, který obsahuje shell a sadu nástrojů příkazového řádku. Vyhledejte na Android Marketu „Busybox“ a měli byste najít několik verzí, které si můžete nainstalovat. Součástí shellu Busybox je doplňování karet a editace historie. Některé verze programu Busybox pro Android nevyžadují root telefonu.
#Utility Debianu
Můžete si nainstalovat kompletní shell a utility Debianu. (Debian je populární desktopová distribuce Linuxu.) Podrobnosti neznám a možná to vyžaduje „rootnutý“ telefon. Zkuste na webu vyhledat „Debian Android install“.
#Vlastní ROM
Některé vlastní ROM přicházejí s vlastním shellem a utilitami. Pokud používáte vlastní ROM, podívejte se do její dokumentace a zjistěte, co je k dispozici.