Как включить завершение файла по умолчанию в bash
Скажи, у меня есть команда с именем "Foo» который принимает один аргумент (либо "шифровать» или же "расшифровать»), а затем список файлов. Я хочу написать скрипт завершения bash, который помогает с первым аргументом, а затем включает стандартное завершение файла для остальных. Ближайший ямы смогли прийти вот это:
complete -F _foo foo
function _foo()
{
local cmds cur
if [ $COMP_CWORD -eq 1 ]
then
cur="${COMP_WORDS[1]}"
cmds=("encrypt decrypt")
COMPREPLY=($(compgen -W "${cmds}" -- ${cur}) )
else
COMPREPLY=($(compgen -f ${COMP_WORDS[${COMP_CWORD}]} ) )
fi
}
Это правильно делает первый аргумент и выберет имя файла из текущего каталога для последующих. Но, скажем, текущий каталог содержит панель подкаталогов, которая содержит файл baz.txt. После ввода ba-TAB-TAB, завершение приводит к "бар " (пробел после "r") и готов выбрать следующий аргумент. То, что я хочу, это стандартное завершение bash, где результат "бар/" (без косой черты), готов выбрать файл в подкаталоге. Есть ли способ получить это?