Выберите имя файла Unicode в Bash


9

Хорошо; Предположим, я в Bash и у меня есть несколько файлов в папке. Некоторые из них названы file☠☡☢☣.txt, где ☠☡☢☣начинаются с сумасшедших нетипичных символов юникода. Как бы я сослался на один из них? Нажатие вкладки только автоматически завершает file, а затем он хочет, чтобы вы набрали сумасшедший персонаж. Есть ли какой-нибудь способ сказать bash «выбрать 3-го в списке, который вы только что дали мне»?

Ответы:


9

Я бы посоветовал вам обойти это и использовать другой тип привязки клавиш с readline, например Shift+ TAB. Добавьте следующее к вашему ~/.inputrc:

"\e[Z": menu-complete

Затем выдайте exec bash(это должно затем прочитать настройки в вашем ~/.inputrc). В качестве однократного, вместо перезапуска bash, вы можете установить ту же привязку, запустив ее bind '"\e[Z": menu-complete'.

Теперь вы должны иметь возможность использовать повторяющиеся ShiftTABпоследовательности для циклического перебора имен файлов, которые совпадают (вместо того, чтобы вводить следующий соответствующий символ). Это будет работать для любой команды (так как это стандартная команда read-line, связанная с ShiftTABпоследовательностью). Как отмечено в OP, это не влияет на стандартное поведение TABклавиши, оно просто добавляет функциональность ShiftTABкомбо.


отредактированный, чтобы упомянуть использование exec bash, поскольку это довольно важный шаг, чтобы заставить это работать! ;)
Драв Слоан

Спасибо! Для тех, кто интересуется, это, кажется, не меняет нормальную функциональность; он просто добавляет комбинацию клавиш Shift-Tab.
Эрханнис

Исправьте, пожалуйста, оставьте мою клавишу табуляции в покое !! :) Я бы расстроился, если бы это изменилось: D
Драв Слоан

3

Другой способ, который иногда срабатывает, - это использование ?или *подстановка подстановочных знаков, а затем ввод некоторых остатков «материала», пока вы не получите уникальное совпадение с завершением табуляции.


2

Перейдите в каталог, содержащий file☠☡☢☣.txtи введите ls -i. Вы увидите строку:

xxxxx file☠☡☢☣.txt

где xxxxxэто порядковый номер file☠☡☢☣.txt. Войти:

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

где xxxxxна предыдущей строке указан вышеупомянутый порядковый номер, полученный из ls -i. Это переименовывается file☠☡☢☣.txtкак bettername.txt.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.