So verhindern Sie, dass die ADB-Shell bei Strg + C beendet wird


11

Wenn ich adb shellauf mein Gerät (vom Windows-Desktop) gehe und dort einen Befehl ausführe, möchte ich diesen Befehl manchmal beenden. Die Standard-Unixy-Methode ist die Ctrl+CTastenkombination. Wenn ich das mache, adb shellendet das Ganze jedoch.

Wie kann ich nur das aktuelle Programm in der Shell beenden, nicht die Shell selbst?


Ich habe einen Forumsbeitrag gelesen, in dem behauptet wurde, dass <kbd> Strg </ kbd> + <kbd>] </ kbd> funktioniert hat, aber ich habe es ohne Glück versucht. Ihr Kilometerstand kann variieren. Es scheint keine Möglichkeit zu geben, adb Strg-C zu übergeben, da SIGINT nicht erfasst wird. Die Standard- Strg-V-Methode scheint für Strg-C nicht zu funktionieren, obwohl sie ^Jleider die Eingabetaste in konvertiert hat.
Matthew Read

Antworten:


13

Ich habe eine Art Problemumgehung dafür gefunden (zumindest für ein verwurzeltes Telefon). Wenn ein Telefon gerootet ist, busyboxist es höchstwahrscheinlich installiert. sttyist Teil der Busybox.

stty intr ^ x

Definiert Ctrl+ neu X, um als Unterbrechungsbefehl zu fungieren, z. B. was zuvor Ctrl+ war C.


3
Das ist ziemlich großartig.
Matthew Read

5

Alt- NumPad 3+ Enterarbeitet für mich. Alt- NumPad 0- NumPad 3+ Enterfunktioniert auch und zeigt "^ C" an.


3

Ich konnte den topProzess stoppen und trotzdem in der Shell bleiben, indem ich Folgendes in dieser Reihenfolge eingab:

C

CTRL+Z

CTRL+M

Wenn ich nicht alle 3 dieser Combos eingeben würde, würde es nicht aufhören und ich müsste CTRL+ C, um die Shell zu verlassen. Ich fand dies, indem ich einfach verschiedene Tastenkombinationen ausprobierte und es zufällig fand. YMMV


Strg + Z unterbricht einen Prozess, z. B. müssen Sie ihn später mit kill oder killall beenden. Diese Problemumgehung ist jedoch besser als nichts ...
Haimg

Ich erkannte das nach dem "Exit". lustige Sache, es war nicht die Strg + Z, die etwas tat, es ging nicht zurück zur Shell, bis ich Strg + M tat, und wenn ich nicht zuerst "c" tippte, tat es nichts.
Ryan Conrad

Das funktioniert bei mir nicht (ich habe es aber vmstatnicht versucht top). Interessanterweise siehtCtrl-Z es so aus, als würde nichts passieren, aber tatsächlich wird meine Eingabe direkt in die Windows-Shell und nicht in adb umgeleitet. Die Ausgabe von adb (von vmstat) wird weiterhin im Shell-Fenster angezeigt, aber ich könnte cd C:(zum Beispiel) eingeben und sie würde in der Windows-Shell ausgeführt. Wenn ich dann drückte, hörte Ctrl-Cdie Ausgabe auf und ich sah den Befehl, den ich hinter den Kulissen in die Windows-Shell eingegeben hatte. Sehr merkwürdig!
Matthew Read

3

Ctrl+ \gefolgt von Enterfunktioniert normalerweise gut.

Dadurch wird ein SIGQUIT-Signal gesendet, das möglicherweise nicht für einen Server geeignet ist (z. B. wird eine Kerndatei ausgegeben), aber ich glaube nicht, dass es ein Problem ist, dies auf einem Android-Telefon / -Tablet zu verwenden (das standardmäßig keine Kerndatei ausgibt) ). Einfache Lösung, die in den meisten Fällen funktioniert.


3

Unter Windows können Sie einfach [Alt] + [3] über den Nummernblock eingeben (vergessen Sie nicht, anschließend die Eingabetaste zu drücken).
Dies sendet [Strg] + [c] an die Shell, wodurch der aktuelle Befehl beendet wird:

D: \ Android> ADB-Shell
$ cat
Katze
♥
^ C.

$ exit
Ausfahrt

D: \ Android>

Beachten Sie, dass [Alt] + [3] in Windows das ASCII-Zeichen ♥ erzeugt, das dem ETX-Byte entspricht.
Sie können auch [Alt] + [0] - [3] drücken (halten Sie die Alt-Taste gedrückt, während Sie [0] und [3] auf dem Nummernblock drücken), wenn Sie keine Zauberstabfenster verwenden, um ein Herz anzuzeigen;)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.