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í?


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.


3
Eso es bastante asombroso.
Matthew leyó el


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


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.


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;)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.