2010-12-18 4 views
8

Ich habe vor kurzem auf das neue Android SDK aktualisiert und mir ist etwas sehr sehr lästig aufgefallen. Es scheint, dass es nicht mehr möglich ist, den Befehlsverlauf in der Shell zu verwenden. Siehst du das Gleiche? Die Android-Shell scheint mir schrecklich, aber zumindest hatte ich im letzten SDK den Befehlsverlauf. Nun, es scheint, dass, wenn man den Pfeil nach oben/unten drückt, einige Codes in der Eingabeaufforderung erscheinen (etwas wie^[[A,^[[B etc ...]). Ich habe versucht, ein wenig herumzulesen, aber ich fand nur sehr wenige, die das mit null Antworten baten. Irgendeine Idee, warum das passiert und wie man das löst?Wie Android AdB Shell-Geschichte mit Up/Down-Tasten unter Linux aktivieren?

+0

Glücklicherweise nicht mehr der Fall in Android 7 (und wahrscheinlich früher). –

Antwort

0

Wenn Ctrl - p Sie noch Vorgeschichte Einträge gibt, dann möglich ist es, dass die Pfeiltasten aus irgendeinem Grund nicht gebundenen wurde. Versuchen Sie folgendes:

bind '"\e[A": previous-history' 
bind '"\e[B": next-history' 

Wenn das auf den Pfeil macht Tasten funktionieren, können Sie es durch das Hinzufügen dieser beiden Linien zu /etc/inputrc oder ~/.inputrc persistent machen:

"\e[A": previous-history 
"\e[B": next-history 
+1

Zuletzt habe ich es benutzt, die Android-Shell hat readline nicht benutzt, aber dann erinnere ich mich nicht daran, irgendeine Form der Befehlszeile-Ausgabe einschließlich Pfeile für die Geschichte zur Verfügung zu stellen. – Gilles

+0

@Gilles: Ich habe es selbst schon eine ganze Weile nicht mehr benutzt, aber ich habe meine Antwort nur darauf gestützt, was der OP gesagt hat. –

+1

Ctrl-P gibt mir die Geschichte, aber nicht in der Android-Shell. Aber, wo muss ich den Bindebefehl versuchen? In der Linux-Shell? Ich habe es versucht und es macht es unmöglich, die Pfeile zu verwenden, um sich in der Geschichte zu bewegen. Wenn ich in der Android-Shell versuche, scheint die Befehlsbindung nicht zu existieren. Irgendeine Idee? –

3

Sie die Schale nach innen rlwrap laufen kann:

Ich bevorzuge es in einem Emacs-Shell-Puffer selbst zu laufen, ich empfehle dies, wenn Sie nicht allergisch gegen Emacs sind. Emacs ist auch schön zum Laufen adb logcat: Sie erhalten einen Suchverlauf und die Nachrichten werden aktualisiert, wie sie kommen, und Sie können einfach interessante Muster in Farbe (M-x highlight-regexp und Freunde) setzen.

+0

Ich habe den Befehl versucht, den Sie mir gegeben haben, aber ich sehe keine Änderungen. Die Hülle ist exakt identisch. Vielleicht habe ich etwas falsch gemacht? Vielen Dank! –

+0

@Luca: Ich bekomme grundlegende Befehlszeile mit adb und den Emulator aus dem Gingerbread SDK unter Linux, und 'rlwrap' gibt readline edition. Ich erinnere mich, dass "rlwrap" nicht mit einer früheren SDK-Version funktioniert, aber ich erinnere mich nicht an welche Version. – Gilles

+0

kann ich nicht verstehen ... Ich habe es gerade noch einmal versucht, aber ich sehe wirklich keine Änderungen. –

0

Wenn Sie über echte Gerät (nicht Emulator) sprechen, sollten Sie einige nicht offizielle Firmwares versuchen, wie Cyanogenmod - es enthält viel bessere binäre Tools, wie viel mehr funktionsfähige Shell, gesunde Reihe von normalen UNIX-Tools , ssh server, etc.

Wenn Sie über Emulator sprechen, können Sie diese Binaries aus Firmwares extrahieren und in den Emulator schieben (wie in einem Speicherkartenabbild).

+0

Ich spreche über ein echtes Gerät und dieses Problem ist nicht mit der Firmware verbunden. Es begann, als ich auf dem gleichen Gerät auf das letzte SDK 2.3 aktualisiert habe. –

+0

Wie auch immer, ich habe es überprüft und es passiert auch auf dem Emulator. –

+0

Ok, ich verstehe. Nun, zumindest können Sie versuchen, die Verbindung mit ssh (dropbear ssh Server auf Ihrem Gerät und ssh Client aus Ihrer Entwicklungs-Box) als Workaround. – GreyCat

Verwandte Themen