Sélectionnez le nom de fichier unicode dans Bash

9

D'accord; supposons que je sois dans Bash et que j'ai plusieurs fichiers dans un dossier. Plusieurs d'entre eux sont nommés file☠☡☢☣.txt, où ☠☡☢☣commence avec des caractères unicode indescriptibles fous. Comment pourrais-je me référer à l'un d'eux? Pousser l'onglet ne se termine que automatiquement file, puis il veut que vous saisissiez un caractère fou. Existe-t-il un moyen de dire à bash "sélectionnez le 3ème dans la liste que vous venez de me donner"?

Erhannis
la source

Réponses:

9

Je vous suggère de contourner ce problème et d'utiliser un autre type de liaison de clé avec readline, tel que Shift+ TAB. Ajoutez ce qui suit à votre ~/.inputrc:

"\e[Z": menu-complete

Ensuite, lancez un exec bash(cela devrait alors lire les paramètres dans votre ~/.inputrc). De manière ponctuelle, au lieu de redémarrer bash, vous pouvez configurer la même liaison en exécutant bind '"\e[Z": menu-complete'.

Vous devriez maintenant être en mesure d'utiliser des ShiftTABséquences répétées pour parcourir les noms de fichiers qui correspondent (plutôt que d'avoir à saisir le prochain caractère correspondant). Cela fonctionnera pour toute commande émise (car c'est une commande de ligne de lecture standard qui est liée à la ShiftTABséquence). Comme indiqué par l'OP, cela n'affecte pas le comportement standard de la TABclé, il ajoute simplement la fonctionnalité du ShiftTABcombo.

Drav Sloan
la source
modifié pour mentionner l'utilisation de exec bash, car c'est une étape assez importante pour le faire fonctionner! ;)
Drav Sloan
Merci! Pour tous ceux qui se demandent, cela ne semble pas changer la fonctionnalité normale; il ajoute simplement la combinaison de touches Maj + Tab.
Erhannis
Correct, veuillez laisser ma touche tabulation seule !! :) Je serais contrarié si cela changeait: D
Drav Sloan
3

Une autre façon qui fonctionne parfois consiste à utiliser ?ou à *globaliser les caractères génériques, puis à taper une partie du reste des "trucs" jusqu'à ce que vous obteniez une correspondance unique avec l'achèvement de l'onglet.

lynxlynxlynx
la source
2

Accédez au répertoire contenant file☠☡☢☣.txtet entrez ls -i. Vous verrez la ligne:

xxxxx file☠☡☢☣.txt

xxxxxest le numéro d'index de file☠☡☢☣.txt. Entrer:

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

xxxxxsur la ligne précédente est le numéro d'index susmentionné obtenu à partir de ls -i. Cela renomme file☠☡☢☣.txten bettername.txt.

Greg Marks
la source