Я некоторое время играл с 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
но тогда автодополнение должно работать только на последнюю часть, фактического название проекта. И я понятия не имею, как это возможно.