#Az Android Shell
A “shell” egy olyan program, amely hallgatja a felhasználó billentyűzetbemenetét, és a felhasználó utasításai szerint hajt végre műveleteket. Az Android készülékek egy egyszerű shell programmal vannak ellátva. Ez a shell program többnyire dokumentálatlan. Mivel sokan kíváncsiak rá, gondoltam, írok hozzá egy kis dokumentációt.
Currently this documentation is incomplete, sorry!
##Gyakori problémák
A beépített shell nagyon korlátozott hibakezeléssel rendelkezik. Ha rosszul írsz be egy parancsnevet, azt fogja mondani, hogy “engedély megtagadva”, pedig a valódi probléma az, hogy nem találta a parancsot:
$ dirdir: permission denied <---- this is a misleading error message, should say 'dir: not found'$ ls... listing of current directory
#A PATH változó
Az Android shell minden olyan programot futtat, amit a PATH-ban talál. A PATH egy kettősponttal (‘:’) elválasztott könyvtárak listája. A beépített echo paranccsal megtudhatja, hogy mi van beállítva a shell PATH-jában:
$ echo $PATH/data/local/bin:/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
A shell-től függően eltérő eredményt kaphat.
#Beépített parancsok
Minden shell rendelkezik néhány beépített paranccsal. Néhány gyakori beépített parancs:
- echo — szöveget ír ki az stdout-ra.
- set — shellváltozók beállítása
- export — shellváltozókat tesz elérhetővé parancssori programok számára
- cd — az aktuális könyvtár megváltoztatása.
- pwd — az aktuális könyvtár nevének kiírása.
#ParancsokHogy megtudja, milyen parancsok állnak rendelkezésére, használja az “ls” parancsot a PATH változóban szereplő egyes könyvtárakra.
##Az Android parancsok dokumentációjának keresése.
Az Android parancsok nagy része a szabványos Linux (vagy bsd) parancsokon alapul. Ha kíváncsi vagy egy parancsra, néha egy asztali Linux vagy OSX (Apple Macintosh) számítógépen a “man” parancs segítségével megtudhatod, hogyan működik. A parancs Linux vagy OSX verziója részleteiben eltérő lehet, de a dokumentáció nagy része a parancs Android verziójára is vonatkozik.
A dokumentáció másik forrása azok számára, akiknek nincs kéznél Linux vagy OSX gépük, az, ha webböngészőt használnak, és egy webes keresőmotor segítségével keresnek rá a szövegre: “man Linux parancsnév”.
##A parancsok listája
A következőkben az Android 2.3.3 “user-debug” buildet futtató Nexus S telefonon található parancsok listája következik. E parancsok közül sok nincs jelen a “felhasználói” telefonon. (Azért hiányoznak egy “felhasználói” telefonról, mert az Android operációs rendszer fejlesztésére vagy hibakeresésére jellemzőek.)
$ ls /data/local/bin/data/local/bin: No such file or directory
Megjegyezzük, hogy alapértelmezés szerint nincs /data/local/bin könyvtár. Ezt a könyvtárat az “mkdir” paranccsal hozhatja létre, ha szeretné.
$ ls /sbinopendir failed, Permission denied
A /sbin könyvtár létezik, de nincs jogosultsága hozzá. Root hozzáférésre van szükséged. Ha van egy fejlesztői telefonod, vagy egyébként root hozzáféréssel rendelkezel a telefonodhoz, akkor megnézheted, hogy mi van ebben a könyvtárban.
$ su# ls /sbinueventdadbd# exit$
Figyeld meg, hogy a shell prompt ‘$’-ról ‘#’-re változik, jelezve, hogy root hozzáféréssel rendelkezel.
Figyeljünk arra is, hogy a /sbin parancsok egyike sem hasznos a shell számára — az adb és az ueventd fájlok “daemon” programok, amelyek a fejlesztők által használt Android Debugger “adb” program megvalósítására szolgálnak.
$ ls /vendor/bingpsdpvrsrvinit
A vendor/bin az, ahová a készülékgyártók a készülék-specifikus futtatható programokat helyezhetik. Ezek a fájlok egy Nexus S-ről származnak.
$ ls /system/sbin/system/sbin: No such file or directory
Ez a könyvtár nem létezik egy Nexus S-en.
$ ls /system/binam
am az Android Activity Manager. Android tevékenységek (pl. alkalmazások) indítására és leállítására szolgál a parancssorból. Írja be az am-t önmagában, hogy megkapja az opciók listáját.
amixaplay
Kommandósori hangfájllejátszó.
app_processapplypatch
Az androidos fájlokra történő javítások alkalmazására szolgál.
arec
Kommandósori hangfelvevő.
audioloopbluetoothd
BlueTooth daemon
bmgr
Backup manager – írja be a parancsot önmagában a dokumentációhoz.
bootanimation
Megrajzolja a boot animációt. Lehet, hogy vissza kell állítani a telefont, hogy kijusson ebből.
brcm_patchram_plusbugreportcat
Egy fájl tartalmának másolása a standard kimenetre.
chmod
Egy fájl módjának módosítása (pl. hogy olvasható vagy írható-e.)
chown
Egy fájl tulajdonosának megváltoztatása.
cmp
Két fájl byte-onkénti összehasonlítása
dalvikvm
A dalvik virtuális gép. (Android alkalmazások futtatására szolgál.)
date
Kinyomtatja az aktuális dátumot és időt
dbus-daemondd
Fájlok átalakítása és másolása. Alapértelmezés szerint a standard be-ről a standard kimenetre másol.
debuggerddexoptdf
Megmutatja, hogy mennyi szabad hely van a készülék különböző fájlrendszereiben.
dhcpcddmesgdnsmasqdumpstatedumpsysdvzfsck_msdosgdbservergeteventgetpropgziphciattachhdidifconfig
Megjeleníti a hálózati interfészek aktuális konfigurációját (IP, MAC cím stb.)
iftop
Megjeleníti a hálózati interfészeket használó aktuális folyamatokat (felül, de hálózatoknál)
imeinputinsmodinstalldioctlioniceiptables
A tűzfal kezelése
keystorekeystore_clikill
Jelek küldése a folyamatoknak.
linkerln
Fájlrendszeri kapcsolat beállítására szolgál.
loglogcat
Az Android futásidő naplójának nyomtatása.
logwrapperls
Fájlok listázása.
lsmodlsofmake_ext4fsmediaservermkdir
Könyvtár készítése.
monkey
Véletlenszerű eseményeket küldő program, alkalmazások tesztelésére szolgál. (Mintha egy majom játszana az eszközzel.)
mountmtpdmv
Fájlok áthelyezése egyik könyvtárból a másikba. (Csak ugyanazon a fájlrendszeren belül. Használja a “cat a > b” parancsot egy fájl másolásához a fájlrendszerek között.
nandreadndcnetcfgnetdnetstatnewfs_msdosnotifyomx_testspandpingpmpppdprintenvps
Az aktív folyamatok listázása.
qemu-propsqemudracoonradiooptionsreboot
A készülék újraindítása.
recordrenicerildrm
Fájl eltávolítása.
rmdir
Könyvtár eltávolítása.
rmmodroutertp_testrun-asschedtestschedtopsdcardsdptoolsendeventserviceservicemanagersetconsolesetpropsetup_fsshshowleasesleepsmdstagefrightstart
Android futásidő elindítása.
stop
Leállítja az Android futási időt.
surfaceflingersvcsyncsystem_servertctestid3toolboxtop
Megmutatja, hogy mely folyamatok használják jelenleg a legtöbb CPU-időt.
umountuptime
Kinyomtatja, hogy mennyi ideje fut a készülék az utolsó indítás óta.
vdcvmstatvoldwatchpropswipewpa_cliwpa_supplicant$ ls /system/xbinadd-property-tagbtoolcheck-lost+founddexdumpdhdutilhcidumplatencytoplibrankopcontroloprofiledprocmemprocrankrawbuscp
Biztonságos másolási program. (Fájlok hálózaton keresztüli másolására szolgál.)
showmapshowslabsqlite3
SQLite adatbázisok adminisztrálására szolgál.
strace
System trace parancs – segítségével megnézheti, hogy egy program milyen rendszerhívásokat hajt végre.
su
Héj indítása root jogosultságokkal.
#Az Android Shell verziói
- Az Android 1.0 olyan héjat használt, amely nem rendelkezett tab-kiegészítéssel vagy előzmények szerkesztésével.
- Az Android 2.3 hozzáadta az előzmények szerkesztését. A fel-le nyilakkal például szerkeszthetjük a korábbi parancsokat.
#Más héjak
#Busybox
A Busybox egy olyan program, amely egy héjat és egy sor parancssori segédprogramot tartalmaz. Keress rá az Android Marketben a “Busybox” kifejezésre, és találsz néhány telepíthető verziót. A Busybox shell tartalmaz lapkakiegészítést és előzmények szerkesztését. A Busybox for Android egyes változatai nem igénylik a telefon rootolását.
#Debian segédprogramok
A teljes Debian shell és segédprogramok telepíthetők. (A Debian egy népszerű asztali Linux disztribúció.) Nem ismerem a részleteket, és lehet, hogy ehhez “rootolt” telefonra van szükség. Próbálj meg rákeresni az interneten a “Debian Android install” kifejezésre.
#Custom ROMs
Néhány custom ROM saját héjjal és segédprogramokkal rendelkezik. Ha egyéni ROM-ot használ, nézze meg a dokumentációját, hogy megtudja, mi áll rendelkezésére.