#Die Android-Shell
Eine „Shell“ ist ein Programm, das auf Tastatureingaben eines Benutzers hört und Aktionen ausführt, die vom Benutzer angewiesen werden. Android-Geräte werden mit einem einfachen Shell-Programm ausgeliefert. Dieses Shell-Programm ist größtenteils undokumentiert. Da viele Leute neugierig darauf sind, dachte ich, ich schreibe mal eine Dokumentation dazu.
Currently this documentation is incomplete, sorry!
##Gängige Probleme
Die eingebaute Shell hat eine sehr begrenzte Fehlerbehandlung. Wenn man den Namen eines Befehls falsch eingibt, sagt sie „permission denied“, obwohl das eigentliche Problem darin besteht, dass sie den Befehl nicht finden konnte:
$ dirdir: permission denied <---- this is a misleading error message, should say 'dir: not found'$ ls... listing of current directory
#Die PATH-Variable
Die Android-Shell führt jedes Programm aus, das sie in ihrem PATH findet. Der PATH ist eine durch Doppelpunkte (‚:‘) getrennte Liste von Verzeichnissen. Sie können herausfinden, wie der PATH Ihrer Shell eingestellt ist, indem Sie den eingebauten echo-Befehl verwenden:
$ echo $PATH/data/local/bin:/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
Abhängig von Ihrer Shell können Sie ein anderes Ergebnis sehen.
#Eingebaute Befehle
Jede Shell hat ein paar eingebaute Befehle. Einige übliche eingebaute Befehle sind:
- echo — gibt Text auf stdout aus.
- set — setzt Shellvariablen
- export — macht Shellvariablen für Kommandozeilenprogramme verfügbar
- cd — wechselt das aktuelle Verzeichnis.
- pwd — druckt den Namen des aktuellen Verzeichnisses.
#BefehleUm herauszufinden, welche Befehle Ihnen zur Verfügung stehen, verwenden Sie den „ls“-Befehl für jedes der Verzeichnisse in der PATH-Variable.
##Finden der Dokumentation für die Android-Befehle.
Viele der Android-Befehle basieren auf Standard-Linux- (oder bsd-) Befehlen. Wenn Sie neugierig auf einen Befehl sind, können Sie manchmal erfahren, wie er funktioniert, indem Sie den Befehl „man“ auf einem Linux- oder OSX-Computer (Apple Macintosh) verwenden. Die Linux- oder OSX-Version des Befehls kann sich im Detail unterscheiden, aber ein Großteil der Dokumentation gilt auch für die Android-Version des Befehls.
Eine andere Quelle für die Dokumentation für Leute, die keinen Linux- oder OSX-Rechner zur Hand haben, ist die Verwendung eines Webbrowsers und die Verwendung einer Web-Suchmaschine, um nach dem Text zu suchen: „man Linux command-name“.
##List of commands
Das Folgende ist eine Liste der Befehle, die auf einem Nexus S Telefon mit einem Android 2.3.3 „user-debug“ Build vorhanden sind. Viele dieser Befehle sind auf einem „User“-Telefon nicht vorhanden. (Sie fehlen auf einem „Benutzer“-Telefon, weil sie spezifisch für die Entwicklung oder das Debugging des Android-Betriebssystems sind.)
$ ls /data/local/bin/data/local/bin: No such file or directory
Beachte, dass es standardmäßig kein Verzeichnis /data/local/bin gibt. Sie können dieses Verzeichnis mit dem Befehl „mkdir“ erstellen, wenn Sie möchten.
$ ls /sbinopendir failed, Permission denied
Das Verzeichnis /sbin existiert, aber Sie haben keine Berechtigung, darauf zuzugreifen. Sie brauchen Root-Zugriff. Wenn Sie ein Entwicklertelefon haben oder anderweitig Root-Zugriff auf Ihr Telefon haben, können Sie sehen, was sich in diesem Verzeichnis befindet.
$ su# ls /sbinueventdadbd# exit$
Beachten Sie, dass sich der Shell-Prompt von einem ‚$‘ zu einem ‚#‘ ändert, um anzuzeigen, dass Sie Root-Zugriff haben.
Beachten Sie auch, dass keiner der /sbin-Befehle für die Shell nützlich ist – die adb- und ueventd-Dateien sind „Daemon“-Programme, die verwendet werden, um das Android-Debugger-Programm „adb“ zu implementieren, das von Entwicklern verwendet wird.
$ ls /vendor/bingpsdpvrsrvinit
Vendor/bin ist der Ort, an dem Gerätehersteller gerätespezifische ausführbare Dateien ablegen können. Diese Dateien sind von einem Nexus S.
$ ls /system/sbin/system/sbin: No such file or directory
Dieses Verzeichnis existiert nicht auf einem Nexus S.
$ ls /system/binam
am ist der Android Activity Manager. Er wird verwendet, um Android-Aktivitäten (z.B. Anwendungen) von der Kommandozeile aus zu starten und zu beenden. Geben Sie am selbst ein, um eine Liste von Optionen zu erhalten.
amixaplay
Audioplayer für die Befehlszeile.
app_processapplypatch
Wird verwendet, um Patches auf Android-Dateien anzuwenden.
arec
Audiorecorder für die Befehlszeile.
audioloopbluetoothd
BlueTooth-Daemon
bmgr
Backup-Manager – gib den Befehl selbst ein, um die Dokumentation zu erhalten.
bootanimation
Zeichnet die Boot-Animation. Möglicherweise müssen Sie Ihr Telefon zurücksetzen, um dies zu beenden.
brcm_patchram_plusbugreportcat
Kopieren Sie den Inhalt einer Datei in die Standardausgabe.
chmod
Ändern Sie den Modus einer Datei (z. B.
chown
Ändern Sie den Besitzer einer Datei.
cmp
Vergleichen Sie zwei Dateien Byte für Byte
dalvikvm
Die virtuelle Maschine dalvik. (Wird verwendet, um Android-Anwendungen auszuführen.)
date
Druckt das aktuelle Datum und die Uhrzeit
dbus-daemondd
Konvertieren und Kopieren einer Datei. Kopiert standardmäßig von Standard-In nach Standard-Out.
debuggerddexoptdf
Zeigt an, wie viel Speicherplatz auf den verschiedenen Dateisystemen auf Ihrem Gerät frei ist.
dhcpcddmesgdnsmasqdumpstatedumpsysdvzfsck_msdosgdbservergeteventgetpropgziphciattachhdidifconfig
Zeigt die aktuelle Konfiguration der Netzwerkschnittstellen an (IP, MAC-Adresse usw)
iftop
Zeigt die aktuellen Prozesse an, die die Netzwerkschnittstellen verwenden (oben, aber für Netzwerke)
imeinputinsmodinstalldioctlioniceiptables
Verwalte die Firewall
keystorekeystore_clikill
Sende Signale an Prozesse.
linkerln
Verwendet, um eine Dateisystemverknüpfung einzurichten.
loglogcat
Druckt das Android-Laufzeitprotokoll.
logwrapperls
Listet Dateien auf.
lsmodlsofmake_ext4fsmediaservermkdir
Erstellt ein Verzeichnis.
monkey
Ein Programm, das zufällige Ereignisse sendet, um Anwendungen zu testen. (Als ob ein Affe mit dem Gerät spielen würde.)
mountmtpdmv
Eine Datei von einem Verzeichnis in ein anderes verschieben. (Nur auf demselben Dateisystem. Verwenden Sie „cat a > b“, um eine Datei zwischen Dateisystemen zu kopieren.
nandreadndcnetcfgnetdnetstatnewfs_msdosnotifyomx_testspandpingpmpppdprintenvps
Aktive Prozesse auflisten.
qemu-propsqemudracoonradiooptionsreboot
Das Gerät neu starten.
recordrenicerildrm
Eine Datei löschen.
rmdir
Ein Verzeichnis löschen.
rmmodroutertp_testrun-asschedtestschedtopsdcardsdptoolsendeventserviceservicemanagersetconsolesetpropsetup_fsshshowleasesleepsmdstagefrightstart
Startet die Android-Laufzeit.
stop
Stoppt die Android-Laufzeit.
surfaceflingersvcsyncsystem_servertctestid3toolboxtop
Zeigt an, welche Prozesse derzeit die meiste CPU-Zeit verbrauchen.
umountuptime
Zeigt an, wie lange Ihr Gerät seit dem letzten Booten gelaufen ist.
vdcvmstatvoldwatchpropswipewpa_cliwpa_supplicant$ ls /system/xbinadd-property-tagbtoolcheck-lost+founddexdumpdhdutilhcidumplatencytoplibrankopcontroloprofiledprocmemprocrankrawbuscp
Sicherheitskopierprogramm. (Wird verwendet, um Dateien über das Netzwerk zu kopieren.)
showmapshowslabsqlite3
Wird verwendet, um SQLite-Datenbanken zu verwalten.
strace
Systemtrace-Befehl – wird verwendet, um zu sehen, welche Systemaufrufe ein Programm macht.
su
Starten einer Shell mit Root-Rechten.
#Versionen der Android-Shell
- Android 1.0 verwendete eine Shell ohne Tabulatorvervollständigung oder Verlaufsbearbeitung.
- Android 2.3 fügte die Verlaufsbearbeitung hinzu. Sie können zum Beispiel die Pfeile nach oben/unten verwenden, um vorherige Befehle zu bearbeiten.
#Andere Shells
#Busybox
Busybox ist ein Programm, das eine Shell und eine Reihe von Kommandozeilen-Dienstprogrammen enthält. Suchen Sie im Android Market nach „Busybox“ und Sie sollten einige Versionen finden, die Sie installieren können. Die Busybox-Shell enthält Tabulator-Vervollständigung und History-Bearbeitung. Einige Versionen von Busybox für Android erfordern nicht, dass Sie Ihr Telefon rooten.
#Debian utilities
Sie können die vollständige Debian-Shell und Utilities installieren. (Debian ist eine beliebte Desktop-Linux-Distribution.) Ich kenne die Details nicht, und es kann ein „gerootetes“ Telefon erfordern. Versuchen Sie es mit einer Websuche nach „Debian Android install“.
#Custom ROMs
Einige Custom ROMs kommen mit ihren eigenen Shells und Dienstprogrammen. Wenn Sie ein benutzerdefiniertes ROM verwenden, lesen Sie die Dokumentation, um herauszufinden, was verfügbar ist.