Мне нужно, чтобы имена каталогов в /mailman /lists были добавлены в качестве аргумента (без косой черты) в команду 'list_members' независимо от того, где я нахожусь в файловой системе.
В tcsh (на нашем старом сервере) я написал одну строку, чтобы сделать то, что мне нужно:
complete list_members 'p,*,F:/mailman/lists,,' #tcsh
Реализация bash кажется более сложной. Как я могу реализовать это же поведение с помощью Bash?
Завершение табуляции должно быть контекстно-зависимым, чтобы любая часть введенного мной аргумента сужала поиск, как и стандартное завершение bash. Пример:
list_members sys<TAB> #only shows names beginning with sys
Я попробовал несколько решений после просмотра примеров, но они не работают должным образом.
Один неудачный пример:
function _listlists()
{
COMPREPLY=( $( compgen -C 'ls /mailman/lists' ) )
}
complete -F _listlists list_members
Что приводит к ошибке:
-bash: compgen: warning: -C option may not work as you expect
Еще один неудачный пример:
function _listlists()
{
cd /mailman/lists
COMPREPLY=( $( compgen -d ) )
cd -
}
complete -F _listlists list_members
Это показывает все результаты этого dir, переданные по каналу «more», но не отвечает на частичный аргумент, который я уже набрал.
Благодарю.