Cynob
Enthusiast
- 1.019
Viele kennen ihn, oder haben ihn zumindest schon einmal irgendwo gesehen: Den Android Terminal Emulator. In den folgenden Tipps & Tricks will ich euch beschreiben wie man mit ihm arbeiten kann, wie eine Android shell überhaupt funktioniert und was man damit alles anstellen kann.
Ein Android Terminal Emulator ist wie der Name vermuten lässt ein Programm welches uns ermöglicht auf die traditionelle weiße mit einem Betriebssystem zu kommunizieren. Traditionell deswegen weil es die erste wirklich interaktive Möglichkeit ist bzw. war wie man einem Computer "sagen" kann was der doch bitte für einen erledigen möchte. Der Terminal Emulator auf unserem Android System übersetzt also das was wir eingeben in für das System verständlichen Code und führt diesen sogleich aus. Das mit dem Übersetzen geschieht durch einen sogenannten Interpreter. Dieser Interpreter interpretiert unsere Eingabe eines Befehls und sagt dem System dann was es tun soll. Von diesen Interpretern gibt es mehrere. Als Beispiele: Windows hat die Powershell, bei Linux und Android sind die meiner Meinung nach populärsten: sh und bash. Standard ist auf unseren Android Geräten der sh Interpreter. Mithilfe eines "Terminal Emulators" können wir damit "kommunizieren" und unsere Wünsche und Befehle mitteilen. Bei den meisten custom Roms mag ein Terminal Emulator schon mit an board sein. Wenn dem nicht so ist kann man einfach das Programm aus dem Playstore seines Vertrauens nachinstallieren.
Bei Google Play: Android Terminal Emulator – Android-Apps auf Google Play
Bei F-Droid: F-Droid
Haben wir ihn installiert oder gestartet öffnen wir den Terminal Emulator. Dort sehen wir so etwas wie:
Das sieht erst mal komisch aus aber wenn man mal weiß was wofür da ist ist es einfach:
Alles was vor dem @ Zeichen steht ist der Benutzername mit welchem man angemeldet ist ( In unserem Beispiel "u0_a56"). Da Android die Benutzerverwaltung von Linux nicht verwendet steht da in unserem Fall irgend ein generierter Name. Auf einem richtigen Linux würde an der Stelle der Name kommen mit welchem man sich am System angemeldet hat.
Nach dem @ steht "mako" was das Gerät bezeichnet auf welchem man gerade eingeloggt ist. Bei Android ist dies der Gerätename bzw. der Codename unter welchem das Gerät läuft.
Das ganze zusammen liest sich wie ["Benutzer" auf "Maschine"] und kommt daher das der Linux Kernel klassischerweise auf Netzwerke ausgelegt ist wo man sich von seinem PC aus auf andere Rechner einloggen kann. Somit kann man immer leicht feststellen wo man sich gerade befindet. Bei Android ist dies eher zu vernachlässigen. Es gibt zwar einige Fälle wo es interessant wird aber das soll uns erst mal nicht belasten
Jetzt kommen wir zum Doppelpunkt - der hat zur Abwechslung mal nur die Eigenschaft als "Trenner". Also nichts wildes - der will uns nur sagen das nach ihm der Pfad kommt wo wir uns gerade im Dateisystem befinden.
Die Pfadangabe zeigt nach dem Starten des Terminals "/" an was das Root Verzeichnis unseres Systems darstellt. Von da aus können wir zu allen Teilen des Systems gelangen. Man muss sich das wie einen Baum vorstellen - das Root Verzeichnis ist das unterste und von dort verschachteln sich alle Programmteile/Daten in Ordnern und Dateien wie Äste immer weiter auseinander. Das schauen wir uns aber später an.
Jetzt fehlt uns noch das "$" Zeichen - Das zeigt uns an das wir als normaler Nutzer angemeldet sind. Wenn man ein gerootetes Gerät besitzt und eine Shell mit root Rechten öffnet würde an dieser Stelle das "#" Symbol erscheinen. Das "#" Symbol sollte einem bewusst machen das man auch einiges am System kaputt machen kann wenn man die falschen Befehle eintippt.
Wo wir bei den falschen Befehlen angekommen sind - viele wo da schon mal zugesehen haben denken sich: schöne Sonderzeichen wie "/()$%&|<>" und noch ein paar Buchstaben dazwischen - wie ist das Wetter draußen?
Befehle in der Linux/Android Shell bauen immer nach dem gleichen Muster auf.
Dabei kommt zuerst der eigentliche Befehl - dies ist ein Programmaufruf wie wenn ihr über eine grafische Oberfläche z.b. einen Browser aufruft (Das Symbol doppelt anklickt). Da ihr in einer shell aber erst mal nur Text-basiert arbeitet bringt uns das Beispiel mit dem Browser wenig Es ist halt wie zu frühen Computerzeiten - man verwendet Programme welche für die Shell geschrieben wurden. Die also auch Text zurückgeben wenn wir sie aufgerufen haben.
Da allein ein Programm starten ja noch nicht reicht kann man diesem noch Parameter mitgeben. Also Eigenschaften was es genau tun soll oder Einstellungswerte. Dies geschieht mit Hilfe von Bindestrichen/Buchstaben Kombinationen. Davon können auch mehrere vorkommen.
Der Aufbau jeder Kombination ist folgender:
[Bindestrich][Buchstabe](Leerzeichen)[Wert der übergeben werden soll]
Die "(Leerzeichen)" also wirklich " " braucht das System um zu erkennen das es den Wert welcher nach dem Optionsaufruf kommt diesem mitgeben soll. Wenn mehrere Optionen eingegeben werden kommt zwischen jede der Kombinationen auch ein Leerzeichen. Das ist jetzt zunächst vielleicht verwirrend, aber wird hoffentlich mit den Beispielen weiter unten verständlicher.
Wenn eine bestimmte Datei zu bearbeiten ist wird diese bei einem Aufruf als letztes mit in den Befehl geschrieben. (Ausnahme wäre dann natürlich wenn diese als Option wie zuvor beschrieben mitgegeben würde.)
Also sieht ein Shell Befehl mit zwei Optionen welcher eine Datei bearbeitet so aus:
[Programmname] " " [Bindestrich][Buchstabe] " " [ggf. Wert] " " [Bindestrich][Buchstabe] " " [ggf. Wert] " " [Dateiname]
Diesem Aufbau folgt alles was es in der Shell so gibt. Der genannte Wert kann alles sein, von Zahlen bis zu einem String (Text) Das kommt dann darauf was das Programm als Eingabe erwartet.
Machen wir das ganze an einem Beispiel durch dann wird es verständlicher: Dafür benutze ich ein Programm mit dem Namen "ls". Wie schon zu vermuten steht dieses Kürzel für "list" oder auf gut-deutsch "auflisten". In kurz= Das Ding zeigt den Inhalt von Ordnern an. Also tippen wir mal:
ein und drücken die Enter Taste. Daraufhin sehen wir den Inhalt des root-Verzeichnisses "/" aufgelistet welches wie weiter oben beschrieben nach dem Doppelpunkt angezeigt wird. Was da genau steht brauchen wir erst mal nicht weiter beachten - aber merkt euch den Aufbau! Jetzt geben wir unserem Programm eine Option mit:
und wieder die Eingabetaste. Nun sehen wir auf der Bildschirmausgabe viel mehr Eigenschaften der einzelnen Ordner/Dateien. Die Option "-l" sagt dem Befehl ls er solle doch bitte alles anzeigen was er sieht . Jetzt gibt es noch die Option "-a" welche besagt das auch versteckte Dateien mit angezeigt werden sollen. Bei Linux/Android sind das Dateien/Ordner die mit nem Punkt "." im Dateinamen beginnen. Also tippen wir ein:
Nun werden auf dem Bildschirm alle Eigenschaften aller Dateien mitsamt den versteckten angezeigt. (Geht logischerweise nur wenn auch versteckte Dateien vorhanden sind). Die Reihenfolge ist meistens egal. Man kann auch " ls -a -l" schreiben um zum gleichen Ergebnis zu kommen.
Nun eines der Dinge welche ich an der Shell mag - man kann alles verkürzen! Also schrumpfen wir zusammen:
Das funktioniert so lange gut bis ein Wert mitgegeben werden muss - dann muss man diesen Optionsaufruf wieder seperat schreiben. Es versteht sich von selbst das zwischen "l" und "a" kein Leerzeichen stehen darf. Wie zur Hölle kommen wir dazu zu wissen wie diese Optionen "-l" und "-a" zustande kommen oder wie man das Wissen kann. Auch das ist nicht schwer - es gibt einige gute Wege Infos über ein Programm und dessen Optionen zu bekommen: mit der Option "-h " - diese steht für "help" (Hilfe) in kurz. Also tippen wir:
Dummerweise kommt nun der gleiche Bildschirminhalt als wenn nur "ls" aufgerufen werden würde und das -h wird einfach ignoriert. Ok also mehr Arbeit Linux/Android Programme kennen Optionsaufrufe auch ausgeschrieben - dabei muss man anstelle dem "-" ein "--" schreiben. Diese Art Optionen zu setzen/abzufragen ist bei Android nicht so ausgereift wie in einem richtigen Linux. Mit dem Befehl "--help" geht aber meistens was.
und die Eingabetaste. Daraufhin kommt bei mir eine komplette Beschreibung wie das Programm die einzelnen Optionen möchte und welche es gibt.
Als dritte Möglichkeit bieten sich noch die sogenannten "man" pages an (steht für manual). ein richtiges Linux hat die Hilfeseiten mit an board. Android aus Platzgründen aber nicht. Da Hilft bei Google einzugeben:
und sich die Ergebnisse durchzulesen. Mit den zwei zuvor genannten Methoden hat man eigentlich immer Erfolg.
Jetzt zu den Ausnahmen ( wie üblich.... ): Bei Programmen welche ohne weitere "Zugabe" von Optionen nicht laufen wird beim reinen eingeben des Programmnamens die Hilfe schon angezeigt. Schon gut jetzt weiß ich wie ich Shell Programme mit Optionen füttere aber wo gibt es die Programme? Die findet man in den Verzeichnissen: /system/bin und /system/xbin.
Um diese sich anzeigen zu lassen geben wir ein:
und Eingabetaste. Mit Optionen geht das natürlich auch:
Da jedes der dort aufgelisteten Programme andere Möglichkeiten bietet wäre es jetzt zu viel das alles hier aufzulisten.
In meinem nächsten Artikel werde ich ein paar Programme und Befehle beschreiben welche für den alltäglichen Gebrauch richtig nützlich sein können. Wie man mit „cd“ durch die Ordner wechselt, Dateien kopiert sowie neue Dateien erstellt und Texte mit „echo“ in diesen speichert um ein paar Beispiele zu nennen.
Diskussion zum Beitrag
(im Forum "Android OS Entwicklung / Customize")
Weitere Beiträge auf Android-Hilfe.de
Galaxy S7: Nougat-Update kommt voraussichtlich im Januar!
Samsung Galaxy S8: Markteinführung im April?
Nvidia Shield TV: Leistungsstarke TV-Box mit 4K HDR
Ein Android Terminal Emulator ist wie der Name vermuten lässt ein Programm welches uns ermöglicht auf die traditionelle weiße mit einem Betriebssystem zu kommunizieren. Traditionell deswegen weil es die erste wirklich interaktive Möglichkeit ist bzw. war wie man einem Computer "sagen" kann was der doch bitte für einen erledigen möchte. Der Terminal Emulator auf unserem Android System übersetzt also das was wir eingeben in für das System verständlichen Code und führt diesen sogleich aus. Das mit dem Übersetzen geschieht durch einen sogenannten Interpreter. Dieser Interpreter interpretiert unsere Eingabe eines Befehls und sagt dem System dann was es tun soll. Von diesen Interpretern gibt es mehrere. Als Beispiele: Windows hat die Powershell, bei Linux und Android sind die meiner Meinung nach populärsten: sh und bash. Standard ist auf unseren Android Geräten der sh Interpreter. Mithilfe eines "Terminal Emulators" können wir damit "kommunizieren" und unsere Wünsche und Befehle mitteilen. Bei den meisten custom Roms mag ein Terminal Emulator schon mit an board sein. Wenn dem nicht so ist kann man einfach das Programm aus dem Playstore seines Vertrauens nachinstallieren.
Bei Google Play: Android Terminal Emulator – Android-Apps auf Google Play
Bei F-Droid: F-Droid
Haben wir ihn installiert oder gestartet öffnen wir den Terminal Emulator. Dort sehen wir so etwas wie:
Code:
u0_a56@mako:/ $
Alles was vor dem @ Zeichen steht ist der Benutzername mit welchem man angemeldet ist ( In unserem Beispiel "u0_a56"). Da Android die Benutzerverwaltung von Linux nicht verwendet steht da in unserem Fall irgend ein generierter Name. Auf einem richtigen Linux würde an der Stelle der Name kommen mit welchem man sich am System angemeldet hat.
Nach dem @ steht "mako" was das Gerät bezeichnet auf welchem man gerade eingeloggt ist. Bei Android ist dies der Gerätename bzw. der Codename unter welchem das Gerät läuft.
Das ganze zusammen liest sich wie ["Benutzer" auf "Maschine"] und kommt daher das der Linux Kernel klassischerweise auf Netzwerke ausgelegt ist wo man sich von seinem PC aus auf andere Rechner einloggen kann. Somit kann man immer leicht feststellen wo man sich gerade befindet. Bei Android ist dies eher zu vernachlässigen. Es gibt zwar einige Fälle wo es interessant wird aber das soll uns erst mal nicht belasten
Jetzt kommen wir zum Doppelpunkt - der hat zur Abwechslung mal nur die Eigenschaft als "Trenner". Also nichts wildes - der will uns nur sagen das nach ihm der Pfad kommt wo wir uns gerade im Dateisystem befinden.
Die Pfadangabe zeigt nach dem Starten des Terminals "/" an was das Root Verzeichnis unseres Systems darstellt. Von da aus können wir zu allen Teilen des Systems gelangen. Man muss sich das wie einen Baum vorstellen - das Root Verzeichnis ist das unterste und von dort verschachteln sich alle Programmteile/Daten in Ordnern und Dateien wie Äste immer weiter auseinander. Das schauen wir uns aber später an.
Jetzt fehlt uns noch das "$" Zeichen - Das zeigt uns an das wir als normaler Nutzer angemeldet sind. Wenn man ein gerootetes Gerät besitzt und eine Shell mit root Rechten öffnet würde an dieser Stelle das "#" Symbol erscheinen. Das "#" Symbol sollte einem bewusst machen das man auch einiges am System kaputt machen kann wenn man die falschen Befehle eintippt.
Wo wir bei den falschen Befehlen angekommen sind - viele wo da schon mal zugesehen haben denken sich: schöne Sonderzeichen wie "/()$%&|<>" und noch ein paar Buchstaben dazwischen - wie ist das Wetter draußen?
Befehle in der Linux/Android Shell bauen immer nach dem gleichen Muster auf.
Dabei kommt zuerst der eigentliche Befehl - dies ist ein Programmaufruf wie wenn ihr über eine grafische Oberfläche z.b. einen Browser aufruft (Das Symbol doppelt anklickt). Da ihr in einer shell aber erst mal nur Text-basiert arbeitet bringt uns das Beispiel mit dem Browser wenig Es ist halt wie zu frühen Computerzeiten - man verwendet Programme welche für die Shell geschrieben wurden. Die also auch Text zurückgeben wenn wir sie aufgerufen haben.
Da allein ein Programm starten ja noch nicht reicht kann man diesem noch Parameter mitgeben. Also Eigenschaften was es genau tun soll oder Einstellungswerte. Dies geschieht mit Hilfe von Bindestrichen/Buchstaben Kombinationen. Davon können auch mehrere vorkommen.
Der Aufbau jeder Kombination ist folgender:
[Bindestrich][Buchstabe](Leerzeichen)[Wert der übergeben werden soll]
Die "(Leerzeichen)" also wirklich " " braucht das System um zu erkennen das es den Wert welcher nach dem Optionsaufruf kommt diesem mitgeben soll. Wenn mehrere Optionen eingegeben werden kommt zwischen jede der Kombinationen auch ein Leerzeichen. Das ist jetzt zunächst vielleicht verwirrend, aber wird hoffentlich mit den Beispielen weiter unten verständlicher.
Wenn eine bestimmte Datei zu bearbeiten ist wird diese bei einem Aufruf als letztes mit in den Befehl geschrieben. (Ausnahme wäre dann natürlich wenn diese als Option wie zuvor beschrieben mitgegeben würde.)
Also sieht ein Shell Befehl mit zwei Optionen welcher eine Datei bearbeitet so aus:
[Programmname] " " [Bindestrich][Buchstabe] " " [ggf. Wert] " " [Bindestrich][Buchstabe] " " [ggf. Wert] " " [Dateiname]
Diesem Aufbau folgt alles was es in der Shell so gibt. Der genannte Wert kann alles sein, von Zahlen bis zu einem String (Text) Das kommt dann darauf was das Programm als Eingabe erwartet.
Machen wir das ganze an einem Beispiel durch dann wird es verständlicher: Dafür benutze ich ein Programm mit dem Namen "ls". Wie schon zu vermuten steht dieses Kürzel für "list" oder auf gut-deutsch "auflisten". In kurz= Das Ding zeigt den Inhalt von Ordnern an. Also tippen wir mal:
Code:
ls
Code:
ls -l
Code:
ls -l -a
Nun eines der Dinge welche ich an der Shell mag - man kann alles verkürzen! Also schrumpfen wir zusammen:
Code:
ls -la
Code:
ls -h
Code:
ls --help
Code:
u0_a56@mako:/ $ ls --help
usage: ls --color[=auto] [-ACFHLRSZacdfhiklmnpqrstux1] [directory...]
list files
what to show:
-a all files including .hidden -b escape nongraphic chars
-c use ctime for timestamps -d directory, not contents
-i inode number -k block sizes in kilobytes
-p put a '/' after dir names -q unprintable chars as '?'
-s size (in blocks) -u use access time for timestamps
-A list all files but . and .. -H follow command line symlinks
-L follow symlinks -R recursively list files in subdirs
-F append /dir *exe @sym |FIFO -Z security context
output formats:
-1 list one file per line -C columns (sorted vertically)
-g like -l but no owner -h human readable sizes
-l long (show full details) -m comma separated
-n like -l but numeric uid/gid -o like -l but no group
-x columns (horizontal sort)
sorting (default is alphabetical):
-f unsorted -r reverse -t timestamp -S size
--color device=yellow symlink=turquoise/red dir=blue socket=purple
files: exe=green suid=red suidfile=redback stickydir=greenback
=auto means detect if output is a tty.
Code:
man ls
Jetzt zu den Ausnahmen ( wie üblich.... ): Bei Programmen welche ohne weitere "Zugabe" von Optionen nicht laufen wird beim reinen eingeben des Programmnamens die Hilfe schon angezeigt. Schon gut jetzt weiß ich wie ich Shell Programme mit Optionen füttere aber wo gibt es die Programme? Die findet man in den Verzeichnissen: /system/bin und /system/xbin.
Um diese sich anzeigen zu lassen geben wir ein:
Code:
ls /system/bin
Code:
ls -la /system/bin
In meinem nächsten Artikel werde ich ein paar Programme und Befehle beschreiben welche für den alltäglichen Gebrauch richtig nützlich sein können. Wie man mit „cd“ durch die Ordner wechselt, Dateien kopiert sowie neue Dateien erstellt und Texte mit „echo“ in diesen speichert um ein paar Beispiele zu nennen.
Diskussion zum Beitrag
(im Forum "Android OS Entwicklung / Customize")
Weitere Beiträge auf Android-Hilfe.de
Galaxy S7: Nougat-Update kommt voraussichtlich im Januar!
Samsung Galaxy S8: Markteinführung im April?
Nvidia Shield TV: Leistungsstarke TV-Box mit 4K HDR
Anhänge
Zuletzt bearbeitet von einem Moderator: