Завершение вкладки имени файла Bash

1258
lynks

Иногда я замечал, что завершение вкладок тщательно фильтруется в 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 или чем-то программным.

2

1 ответ на вопрос

3
Lekensteyn

java has a separate auto-completion script that overrides the default completion mechanism. On my distribution (Arch Linux), it is installed in /usr/share/bash-completion/completions/java.

To override the behaviour of tab-completion, you could create such a script. If you just want to have all .class files ignored for every command, you could set the FIGNORE variable (e.g. in your ~/.bashrc). Example: FIGNORE=.class. From the manual page of bash:

FIGNORE
A colon-separated list of suffixes to ignore when performing filename completion (see READLINE below). A filename whose suffix matches one of the entries in FIGNORE is excluded from the list of matched filenames. A sample value is ".o:~".

ааа вот что я искал, большое спасибо lynks 11 лет назад 0

Похожие вопросы