Это может сработать:
_vlink () {
case $COMP_CWORD in
1) COMPREPLY=( $(compgen -W "plug unplug replug" "$2") ) ;;
2) local IFS=$'\n'
COMPREPLY=( $(cd /some/dir && compgen -d "$2") ) ;;
esac
}
complete -F _vlink vlink
Замените /some/dir
каталогом, содержащим интересующие подкаталоги. (Я предполагаю, что в ваших именах каталогов нет символов новой строки.)
COMP_CWORD
— индекс завершаемого слова (0 — имя команды)Итак, мы используемcompgen
:
-W
, и inotifywait -e modify rest-api.py
Еще несколько деталей, чтобы все заработало:
rest_api=$(pwd)/rest-api.py
rest_api_conf=$(pwd)/rest-api.conf
rest_api_log=/var/log/rest-api/rest-api.log
# log
mkdir -p /var/log/rest-api
logrotate $rest_api_conf
# daemon
setsid $rest_api 2>&1 >> $rest_api_log &
pid=$!
trap "kill $pid" exit
while true; do
inotifywait -e modify $rest_api
kill $pid
setsid $rest_api 2>&1 >> $rest_api_log &
pid=$!
trap "kill $pid" exit
done
Наконец, запустите как фоновый процесс или демон:
./rest-api.sh &
setsid./rest-api.sh 2>&1 >/dev/null