У меня следующая структура каталогов:
/home/tichy/xxx/yyy/aaa
/home/tichy/xxx/yyy/aab
/home/tichy/xxx/yyy/aac
Я хотел бы ввести cdw y и получить в результате cdw ггг / , чтобы я мог добавить cdw ггг / a и получите cdw гггг / аа
Решение, которое я нашел, дает мне следующее:
cdw y => cdw yyy
следующий код, который у меня есть:
_cdw () {
local cur prev dirs
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
COMPREPLY=($(compgen -d -- /home/tichy/xxx/${cur}|perl -pe 's{^/home/tichy/xxx/}{}'))
# no difference, a bit more logical:
dirs=$(compgen -o nospace -d /home/tichy/xxx/${cur}|perl -pe 's/{^/home/tichy/xxx/}{}')
COMPREPLY=($(compgen -d -W ${dir} ${cur}|perl -pe 's{^/home/tichy/xxx/}{}'))
return 0
}
complete -F _cdw cdw
cdw () {
cd /home/tichy/xxx/$@
}
Есть идеи, что не так? Мне кажется, что процесс завершения, похоже, завершен и больше не требует ввода.