Como impedir que o shell adb saia após Ctrl + C


11

Quando entro adb shellno meu dispositivo (na área de trabalho do Windows) e executo algum comando lá, às vezes quero finalizar esse comando. A maneira unixy padrão de fazer isso é com a Ctrl+Ccombinação de teclas. No entanto, quando faço isso, o todo adb shelltermina.

Como posso finalizar apenas o programa atual dentro do shell, não o próprio shell?


Eu li uma postagem no fórum alegando que <kbd> Ctrl </kbd> + <kbd>] </kbd> funcionava, mas tentei sem sorte. Sua milhagem pode variar. Parece não haver maneira de o adb passar o Ctrl-C, pois ele não captura o SIGINT. O método Ctrl-V padrão não parece funcionar para o Ctrl-C, embora tenha convertido Enter em ^J, infelizmente.
Mateus Leia

Respostas:


13

Eu encontrei uma espécie de solução alternativa para isso (pelo menos para um telefone raiz). Se um telefone estiver enraizado, busyboxprovavelmente está instalado. sttyfaz parte do busybox.

intrty stty x

Redefine Ctrl+ Xpara atuar como um comando de pausa, por exemplo, que era anteriormente Ctrl+ C.


3
Isso é incrível.
Mateus Leia

5

Alt- NumPad 3+ Enterfunciona para mim. Alt- NumPad 0- NumPad 3+ Entertambém funciona e exibe "^ C".


3

Consegui parar o topprocesso e ainda permanecer no shell digitando o seguinte nesta ordem:

C

CTRL+Z

CTRL+M

se eu não digitasse todos os três combos, ele não parava e eu precisava CTRL+ Cpara sair do shell. Eu descobri isso apenas tentando diferentes combinações de teclas e encontrei por acidente. YMMV


Ctrl + Z suspende um processo, por exemplo, você precisa matá-lo mais tarde com kill ou killall. Esta solução é melhor do que nada, embora ...
haimg

eu percebi que depois quando eu fiz uma "saída". engraçado, não foi o ctrl + z que fez nada, ele realmente não voltou ao shell até que eu fiz o ctrl + m, e se eu não digitar "c" primeiro, ele não fez nada.
Ryan Conrad

Isso não funciona para mim (eu tentei vmstatnão top). Curiosamente, quando pressiono Ctrl-Z, parece que nada acontece, mas, na verdade, minha entrada começa a ser redirecionada diretamente para o shell do Windows e não para adb. A saída do adb (do vmstat) continua aparecendo na janela do shell, mas eu poderia digitar cd C:(por exemplo) e ele seria executado no shell do Windows. Se eu pressionasse Ctrl-Ca saída, pararia e veria o comando digitado no shell do Windows nos bastidores. Muito estranho!
Mateus Leia

3

Ctrl+ \seguido por Entergeralmente funciona bem.

Isso enviará um sinal SIGQUIT que pode não ser apropriado para um servidor (despeja um arquivo principal por exemplo), mas não acho que seja um problema usá-lo em um telefone / tablet Android (que não despeja um arquivo principal por padrão ) Solução fácil que funciona na maioria dos casos.


3

No Windows, você pode simplesmente digitar [Alt] + [3] através do teclado numérico (não esqueça de pressionar enter depois).
Isso envia [Ctrl] + [c] para o shell, encerrando o comando atual:

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

$ exit
Saída

D: \ Android>

Observe que [Alt] + [3] produz o ASCII-Char ♥ no Windows, que é igual ao ETX-Byte.
Você também pode pressionar [Alt] + [0] - [3] (mantenha a tecla Alt pressionada enquanto pressiona [0] e [3] no teclado numérico), se não usar as janelas para exibir um coração;)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.