Seleccione unicode filename en Bash

9

Okay; supongamos que estoy en Bash y tengo varios archivos en una carpeta. Varios de ellos se nombran file☠☡☢☣.txt, donde ☠☡☢☣comienza con personajes unicode locos e inescrutables. ¿Cómo me referiría a uno de ellos? Al presionar la pestaña solo se completa automáticamente file, y luego quiere que escribas un personaje loco. ¿Hay alguna forma de decirle a bash "selecciona el tercero en la lista que me acabas de dar"?

Erhannis
fuente

Respuestas:

9

Te sugiero que lo evites y uses otro tipo de enlace de teclas con readline, como Shift+ TAB. Agregue lo siguiente a su ~/.inputrc:

"\e[Z": menu-complete

Luego emita un exec bash(esto debería leer la configuración en su ~/.inputrc). Como única opción, en lugar de reiniciar bash, puede configurar el mismo enlace ejecutando bind '"\e[Z": menu-complete'.

Ahora debería poder usar ShiftTABsecuencias repetidas para recorrer los nombres de archivo que coinciden (en lugar de tener que ingresar el siguiente carácter coincidente). Esto funcionará para cualquier comando emitido (ya que es un comando de línea de lectura estándar que está vinculado a la ShiftTABsecuencia). Como señaló el OP, esto no afecta el comportamiento estándar de la TABclave, solo agrega la funcionalidad del ShiftTABcombo.

Drav Sloan
fuente
editado para mencionar el uso de exec bash, ya que es un paso bastante importante para que funcione. ;)
Drav Sloan
¡Gracias! Para cualquiera que se pregunte, esto no parece cambiar la funcionalidad normal; solo agrega la combinación de teclas shift-tab.
Erhannis
¡Correcto, por favor, deja mi tecla tab! :) Me
enojaría
3

Otra forma en que funciona a veces es usar ?o *usar comodines y luego escribir algo del resto de "cosas" hasta que obtenga una coincidencia única con la finalización de la pestaña.

lynxlynxlynx
fuente
2

Vaya al directorio que contiene file☠☡☢☣.txte ingrese ls -i. Verás la línea:

xxxxx file☠☡☢☣.txt

donde xxxxxes el número de índice de file☠☡☢☣.txt. Entrar:

find . -maxdepth 1 -inum xxxxx -exec /bin/mv -i {} bettername.txt \;

donde xxxxxen la línea anterior está el número de índice mencionado anteriormente obtenido de ls -i. Esto cambia el nombre file☠☡☢☣.txtcomo bettername.txt.

Greg Marks
fuente