2010-12-18 11 views
8

Recientemente me actualicé al nuevo SDK de Android y noté algo muy molesto. Parece que ya no es posible usar el historial de comandos en el shell. ¿Estás notando lo mismo? El shell de Android me parece horrible, pero al menos, en el último SDK, tenía el historial de comandos. Ahora, parece que al presionar la flecha hacia arriba/hacia abajo, aparecen algunos códigos escritos en el indicador (algo así como^[[A,^[[B, etc. ...]). Traté de leer un poco, pero encontré muy pocos preguntando esto a cero respuestas. ¿Alguna idea de por qué sucede esto y cómo resolver esto?¿Cómo habilitar el historial del shell adb de Android con las teclas arriba/abajo en Linux?

+0

Afortunadamente ya no es el caso en Android 7 (y probablemente antes). –

Respuesta

0

Si Ctrl - p todavía le da entradas del historial anteriores, entonces es posible que las teclas de flecha se convirtieron no unido por alguna razón. Prueba esto:

bind '"\e[A": previous-history' 
bind '"\e[B": next-history' 

Si eso hace que las teclas de flecha trabajo, puede que sea persistente mediante la adición de estas dos líneas a /etc/inputrc o ~/.inputrc:

"\e[A": previous-history 
"\e[B": next-history 
+1

La última vez que lo usé, el shell de Android no usó readline, pero no recuerdo haber proporcionado ninguna forma de edición de línea de comandos, incluidas las flechas para el historial. – Gilles

+0

@Gilles: No lo he usado en bastante tiempo, pero solo estaba basando mi respuesta en lo que dijo el OP. –

+1

Ctrl-P me da el historial pero no en el shell de Android. Pero, ¿dónde tengo que probar el comando bind? En el shell de Linux? Intenté allí y hace que sea imposible usar las flechas para avanzar en el historial. Si intento en el shell de Android, el enlace del comando parece no existir. ¿Alguna idea? –

3

puede ejecutar la cáscara interior rlwrap:

rlwrap adb shell 

Prefiero ejecutarlo en un buffer de shell Emacs, lo recomiendo si no eres alérgico a Emacs. Emacs también es bueno para ejecutar adb logcat: obtienes un historial de búsqueda y los mensajes se actualizan a medida que aparecen, y puedes poner fácilmente patrones de color interesantes (M-x highlight-regexp y amigos).

+0

Intenté el comando que me diste, pero no veo cambios. El caparazón es exactamente idéntico. Tal vez hice algo mal? ¡Gracias! –

+0

@Luca: obtengo una edición de línea de comandos básica con adb y el emulador del SDK de Gingerbread en Linux, y 'rlwrap' da una edición de lectura. Parece recordar que 'rlwrap' no funciona con una versión previa de SDK, pero no recuerdo qué versión. – Gilles

+0

No puedo entender ... Lo intenté de nuevo, pero realmente no veo cambios. –

0

Si habla de dispositivo real (no emulador), debe probar algunos firmwares no oficiales, como Cyanogenmod - incluye herramientas binarias mucho mejores, como shell mucho más funcional, un conjunto sano de herramientas regulares de UNIX , servidor ssh, etc.

Si está hablando de emulador, puede extraer estos binarios del firmware e insertarlos en el emulador como está (utilizando una imagen de tarjeta de memoria).

+0

Estoy hablando de un dispositivo real y este problema no está relacionado con el firmware. Comenzó cuando actualicé al último SDK 2.3 en el mismo dispositivo. –

+0

De todos modos, acabo de comprobar y también está sucediendo en el emulador. –

+0

Ok, lo entiendo. Bueno, al menos puedes intentar conectarte usando ssh (es decir, el servidor dropbear ssh en tu dispositivo y el cliente ssh desde tu caja de desarrollo) como una solución alternativa. – GreyCat

Cuestiones relacionadas