11 votos

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

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

¿Cómo puedo terminar sólo el programa actual dentro de la cáscara, no la cáscara misma?

0 votos

Leí un post en el foro que decía que Ctrl+] funcionaba, pero lo probé sin suerte. Su kilometraje puede variar. Parece que no hay manera de hacer que adb pase Ctrl-C, ya que no captura SIGINT. El estándar Método Ctrl-V no parece funcionar para Ctrl-C, aunque sí convirtió Enter en ^J desgraciadamente.

14voto

haimg Puntos 828

Encontré una especie de solución para esto (al menos para un teléfono rooteado). Si un teléfono está rooteado, busybox es muy probable que esté instalado. stty es parte de la "caja de herramientas".

stty intr ^x

Redefine Ctrl + X para actuar como un comando de ruptura, por ejemplo, lo que antes era Ctrl + C .

3 votos

Eso es bastante impresionante.

5voto

Alt - NumPad 3 + Enter trabaja para mí. Alt - NumPad 0 - NumPad 3 + Enter también funciona y muestra "^C".

3voto

mercutio Puntos 5828

Fui capaz de detener la top proceso y aún así permanecer en la cáscara escribiendo lo siguiente en este orden:

C

CTRL + Z

CTRL + M

si no tecleaba los 3 combos no se detendría y tendría que CTRL + C para salir del cascarón. Encontré esto probando diferentes combinaciones de teclas y lo encontré por accidente. YMMV

0 votos

Ctrl+Z suspende un proceso, por lo que hay que matarlo después con kill o killall. Sin embargo, esta solución es mejor que nada...

0 votos

Me di cuenta después de que cuando hice una "salida". cosa curiosa, no era el ctrl + z que hizo nada, en realidad no volver a la cáscara hasta que hice ctrl + m, y si no escribo "c" en primer lugar, no hizo nada.

0 votos

Esto no me funciona (he intentado vmstat no top sin embargo). Curiosamente, cuando pulso Ctrl-Z it mira como si no pasara nada, pero de hecho mi entrada empieza a ser redirigida directamente al 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 luego presiono Ctrl-C la salida se detendría y vería el comando que había escrito en el shell de Windows entre bastidores. ¡Muy raro!

3voto

dazweeja Puntos 21

Ctrl + \ seguido de Enter normalmente funciona bien.

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

3voto

Dralnaw Puntos 21

En Windows, sólo tienes que introducir [Alt]+[3] a través del teclado numérico (no te olvides de pulsar intro después).
Esto envía [Ctrl]+[c] a la cáscara, terminando así el comando actual:

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

$ exit
exit

D:\\Android>

Nótese que [Alt]+[3] produce el ASCII-Char ♥ en Windows que es igual al ETX-Byte.
También puedes pulsar [Alt]+[0]-[3] (mantén pulsada la tecla Alt mientras pulsas [0] y [3] en el teclado numérico) si no pulsas Windows para mostrar un corazón ;)

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X