2 votos

¿Cómo utilizar nombres de archivo multibyte en el shell adb?

Tengo un Galaxy S6 con Android 7.0:

zeroflte:/ $ getprop ro.build.version.release                                
7.0

Existe un archivo que utiliza el punto de código Unicode U+1F308 ( RAINBOW ) en su nombre:

zeroflte:/ $ ls -al /sdcard/tmp
total 1024
drwxrwx--x  5 root sdcard_rw 4096 2020-07-09 05:44 .
drwxrwx--x 49 root sdcard_rw 4096 2020-06-25 07:27 ..
-rw-rw----  1 root sdcard_rw   17 2018-04-25 20:47 123.org
drwxrwx--x  2 root sdcard_rw 4096 2020-07-09 05:54 crypt
-rw-rw----  1 root sdcard_rw    9 2020-07-08 13:26 .gpx
zeroflte:/ $                                                                                                                                                                                                                                 

Sin embargo, no tengo ni idea de cómo utilizar este nombre de archivo en un comando adb shell. Me gustaría aplicar ls -1 -d -l /sdcard/tmp/\.gpx o similar, pero no puedo entrar en el RAINBOW char. ¿Alguna idea de cómo hacer esto?

2 votos

¿Qué pasa con ls -1dl /sdcard/tmp/*.gpx ? O cambiar el nombre del archivo para eliminar el carácter especial.

0 votos

¿Intentaste Alt + o Ctrl + Shift + U o cualquier combinación de teclas aplicable a su sistema operativo para introducir caracteres unicode.

0 votos

No lo necesito de forma interactiva. Soy el autor del paquete Tramp de Emacs, que utiliza adb shell para acceder a los archivos de los dispositivos Android. Así que necesito algo que pueda ser utilizado en un script.

2voto

mirabilos Puntos 165

mksh desarrollador aquí.

mksh utiliza UTF-8 internamente, pero actualmente está limitado al BMP (plano básico multilingüe), lo que significa de U+0000 a U+FFFD. Si quiere utilizar puntos de código SMP (U-00010000 a U-0010FFFD) en la línea de entrada, actualmente tiene que dis capaz del modo UTF-8 (lo siento):

$ set +U

Eso cambia a un modo de bytes que no limita la entrada. (Se pueden completar archivos con caracteres SMP, pero no introducirlos directamente, porque la entrada se valida).

$ set -U   # switches back to UTF-8 mode

El cambio de mksh a Unicode completo de 21 bits ya está en mi TODO, y actualmente espero poder proporcionarlo para la próxima versión.

1 votos

Gracias, he añadido tu comentario a Tramp. ATM estoy haciendo un workaround, ejecutando el comando en cuestión a través de adb shell <command> .

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