Я хочу написать скрипт bash_completion для своей файловой системы. У меня есть клиентская программа, которая отправляет запросы в некоторые БД.
пример:
my_prog --ls db_name:/foo/bar/
эта команда записывает в стандартный вывод список файлов в папке db_name:/foo/bar
.
Я хочу включить автозаполнение для этого. Поэтому, когда я нажимаю вкладку, он показывает список параметров.
my_prog --ls db_name:/foo/bar/<tab>
но в этом случае, когда я нажимаю вкладку и есть один вариант, он заменяет текущий введенный путь, поэтому я получаю следующее:
$ my_prog --ls db_name:/foo/bar/<tab>
$ my_prog --ls file
Но я хочу, чтобы совпадение было добавлено в конец введенного пути.
Вот моя функция завершения:
__complete_path()
{
COMPREPLY=()
if [[ ${1} == "" ]]
then
COMPREPLY=( "/" )
compopt -o nospace
return
fi
base=${1##*/}
dir=${1%/*}
options="my_prog --ls ${db}:${dir}"
COMPREPLY=( $(compgen -W "${options}" -- ${base} ) )
compopt -o nospace
}
${db}
?? - person F. Hauri   schedule 20.12.2016