2

Иногда я замечал, что завершение вкладок тщательно фильтруется в bash. Я программист java и часто использую команды java и javac в терминале для быстрых или удаленных задач.

Скажем, у меня есть два обычных файла в каталоге: MyProgram.java и MyProgram.class

Если я прошу bash tabcomplete из префикса команды java M , он заполняется прямо до java MyProgram , это полезно. Ясно, что либо bash настроен на прием только дополнений * .class для команды java (и знает, как удалить расширение файла), либо команда java как-то говорит bash об этом.

Я хотел бы сделать то же самое с помощью текстового редактора, поэтому я мог бы напечатать в nano M и сделать его вкладку завершенной к nano MyProgram.java а не останавливаться в nano MyProgram. , можно ли сказать, что черный список * .class из вкладки nano завершен?

Больше всего мне было бы интересно узнать, является ли это конфигурацией bash или чем-то программным.

1 ответ1

3

java есть отдельный скрипт автозаполнения, который переопределяет механизм завершения по умолчанию. В моем дистрибутиве (Arch Linux) он установлен в /usr/share/bash-completion/completions/java .

Чтобы изменить поведение завершения табуляции, вы можете создать такой скрипт. Если вы просто хотите, чтобы все .class игнорировались для каждой команды, вы можете установить переменную FIGNORE (например, в вашем ~/.bashrc). Пример: FIGNORE=.class . Со страницы руководства bash:

FIGNORE
Список суффиксов, разделенных двоеточиями, которые следует игнорировать при выполнении дополнения имени файла (см. READLINE ниже). Имя файла, суффикс которого соответствует одной из записей в FIGNORE, исключается из списка совпадающих имен файлов. Пример значения ".o:~".

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .