Cómo evitar que adb shell salga de Ctrl + C

11

Cuando entro adb shellen mi dispositivo (desde el escritorio de Windows) y ejecuto algún comando allí, a veces quiero terminar ese comando. La forma estándar de hacerlo es con Ctrl+Cuna combinación de teclas. Sin embargo, cuando hago eso, todo adb shelltermina.

¿Cómo puedo terminar solo el programa actual dentro del shell, no el shell en sí?

haimg
fuente
Leí una publicación en el foro que decía que <kbd> Ctrl </kbd> + <kbd>] </kbd> funcionaba, pero lo intenté sin suerte. Su experiencia puede ser diferente. Parece que no hay forma de que adb pase Ctrl-C, ya que no captura SIGINT. El método estándar Ctrl-V no parece funcionar para Ctrl-C, aunque ^Jdesafortunadamente convirtió Enter en .
Matthew leyó el

Respuestas:

13

Encontré una especie de solución para esto (al menos para un teléfono rooteado). Si un teléfono está rooteado, busyboxprobablemente esté instalado. sttyEs parte de busybox.

stty intr ^ x

Redefine Ctrl+ Xpara actuar como un comando de interrupción, por ejemplo, lo que anteriormente era Ctrl+ C.

haimg
fuente
3
Eso es bastante asombroso.
Matthew leyó el
5

Alt- NumPad 3+ Enterfunciona para mi. Alt- NumPad 0- NumPad 3+ Entertambién funciona y muestra "^ C".

Christian d'Heureuse
fuente
3

pude detener el topproceso y seguir en shell escribiendo lo siguiente en este orden:

C

CTRL+Z

CTRL+M

si no escribiera los 3 de esos combos, no se detendría y tendría que CTRL+ Cpara salir del shell. Encontré esto simplemente probando diferentes combinaciones de teclas y lo encontré por accidente. YMMV

Ryan Conrad
fuente
Ctrl + Z suspende un proceso, por ejemplo, debe matarlo más tarde con kill o killall. Sin embargo, esta solución es mejor que nada ...
haimg
Me di cuenta de eso cuando hice una "salida". Lo curioso, no fue el ctrl + z que hizo nada, en realidad no volvió al shell hasta que hice ctrl + m, y si no escribí "c" primero, no hizo nada.
Ryan Conrad
Esto no funciona para mí ( aunque vmstatno lo intenté top). Curiosamente, cuando la prensa Ctrl-Zse ve como no pasa nada, pero en realidad se inicia la entrada se redirige directamente a la shell de Windows y no a ADB. La salida de adb (de vmstat) sigue apareciendo en la ventana del shell, pero podría escribir cd C:(por ejemplo) y se ejecutaría en el shell de Windows. Si presionara, Ctrl-Cla salida se detendría y vería el comando que había escrito en el shell de Windows detrás de escena. ¡Muy raro!
Matthew leyó el
3

Ctrl+ \seguido por Entergeneralmente funciona bien.

Esto enviará una señal SIGQUIT que puede no ser apropiada para un servidor (volca un archivo central, por ejemplo), pero no creo que sea un problema usar esto en un teléfono / tableta Android (que no voltea un archivo central por defecto ) Solución fácil que funciona en la mayoría de los casos.

dazweeja
fuente
3

En Windows, puede ingresar [Alt] + [3] a través del teclado numérico (no olvide presionar enter después).
Esto envía [Ctrl] + [c] al shell, terminando así el comando actual:

D: \ Android> adb shell
$ gato
gato
♥ ♥
^ C

$ salida
salida

D: \ Android>

Tenga en cuenta que [Alt] + [3] produce el ASCII-Char ♥ en Windows que equivale al ETX-Byte.
También puede presionar [Alt] + [0] - [3] (mantenga presionada la tecla Alt mientras presiona [0] y [3] en el teclado numérico) si no vadea las ventanas para mostrar un corazón;)

Dralnaw
fuente