Come impedire l'uscita della shell adb su Ctrl + C


11

Quando accedo adb shellal mio dispositivo (dal desktop di Windows) ed eseguo alcuni comandi lì, a volte voglio terminare quel comando. Il modo unixy standard per farlo è con la Ctrl+Ccombinazione di tasti. Tuttavia, quando lo faccio, l'intero adb shelltermina.

Come posso terminare solo il programma corrente all'interno della shell, non la shell stessa?


Ho letto un post sul forum in cui si afferma che <kbd> Ctrl </kbd> + <kbd>] </kbd> ha funzionato, ma l'ho provato senza fortuna. Il tuo chilometraggio può variare. Non sembra esserci alcun modo per far passare ad adb Ctrl-C, poiché non acquisisce SIGINT. Il metodo Ctrl-V standard non sembra funzionare per Ctrl-C, anche se ^Jsfortunatamente ha convertito Enter in .
Matteo Leggi l'

Risposte:


13

Ho trovato una sorta di soluzione alternativa per questo (almeno per un telefono rootato). Se un telefono è rootato, busyboxmolto probabilmente è installato. sttyfa parte di busybox.

stty intr ^ x

Ridefinisce Ctrl+ Xper agire come un comando di interruzione, ad esempio ciò che era in precedenza Ctrl+ C.


3
È davvero fantastico.
Matteo Leggi l'

5

Alt- NumPad 3+ Enterfunziona per me. Alt- NumPad 0- NumPad 3+ Enterfunziona anche e visualizza "^ C".


3

sono stato in grado di interrompere il topprocesso e rimanere nella shell digitando quanto segue in questo ordine:

C

CTRL+Z

CTRL+M

se non scrivessi tutte e 3 queste combinazioni non si fermerebbe e avrei dovuto CTRL+ Cper uscire dalla shell. Ho trovato questo solo provando diverse combinazioni di tasti e l'ho trovato per caso. YMMV


Ctrl + Z sospende un processo, ad esempio devi ucciderlo in seguito con kill o killall. Questa soluzione alternativa è meglio di niente, però ...
haim

mi sono reso conto che dopo quando ho fatto una "uscita". cosa divertente, non è stato il ctrl + z che ha fatto nulla, in realtà non è tornato alla shell fino a quando non ho fatto ctrl + m, e se non ho digitato prima "c", non ha fatto nulla.
Ryan Conrad,

Questo non funziona per me (ho provato vmstat, non topperò). È interessante notare che, quando premo Ctrl-Zche sembra come se non succede nulla, ma in realtà le mie partenze di ingresso viene reindirizzato direttamente alla shell di Windows e non a adb. L'output di adb (da vmstat) continua a comparire nella finestra della shell ma potrei digitare cd C:(per esempio) e verrà eseguito nella shell di Windows. Se poi premessi Ctrl-Cl'output si fermerebbe e vedrei il comando che avevo digitato nella shell di Windows dietro le quinte. Molto strano!
Matteo Leggi l'

3

Ctrl+ \seguito di Entersolito funziona bene.

Questo invierà un segnale SIGQUIT che potrebbe non essere appropriato per un server (scarica un file core per esempio) ma non penso che sia un problema usarlo su un telefono / tablet Android (che non scarica un file core per impostazione predefinita ). Soluzione semplice che funziona nella maggior parte dei casi.


3

Su Windows, puoi semplicemente inserire [Alt] + [3] tramite il tastierino numerico (non dimenticare di premere Invio in seguito).
Questo invia [Ctrl] + [c] alla shell terminando così il comando corrente:

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

$ uscita
Uscita

D: \ Android>

Si noti che [Alt] + [3] produce ASCII-Char ♥ in Windows che equivale a ETX-Byte.
Puoi anche premere [Alt] + [0] - [3] (tieni premuto il tasto Alt mentre premi [0] e [3] sul tastierino numerico) se non batti le finestre per visualizzare un cuore;)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.