Я некоторое время играл с bash autocomplete, но не смог найти решение своей проблемы. У меня есть каталог проекта с подпапками, как это:
- Проекты / рубин / project1
- Проекты / рубин / project2
- Проекты / рельсы / project3
- проекты / html / проекта4
Теперь я хочу иметь команду, назовите ее cdproject где я могу cd в любой подпапке в моих проектах dir и subdirs. И эта команда должна предоставить функцию автозаполнения, где я могу набрать cdproject pr --> TAB TAB и затем получить список вроде ruby/project1 , ruby/project2 , rails/project3 ...
Моя проблема в том, как обращаться с подкаталогами. Программа cdproject выглядит так
#!/bin/bash
cd $1
cdproject-autocompletion.bash выглядит так
_cdproject()
{
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts=$(ls ~/Dropbox/projects)
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
}
complete -o default -o nospace -F _o o
И внутри моего .bash_profile я cdproject-autocompletion.bash с
source ~/cdproject-autocompletion.bash
Так что у кого есть идея, как этого добиться? Может быть, opts должен возвращать структуру подкаталога ruby/project1 но тогда автодополнение должно работать только на последнюю часть, фактического название проекта. И я понятия не имею, как это возможно.
