Escrevi um script Bash para me ajudar a gerenciar alguns links simbólicos. É um wrapper em torno de alguns comandos do Stow .
Quando o invoco, passo dois argumentos de linha de comando: um comando ( plug
/ unplug
/ replug
) e um nome de diretório (apenas seu nome base, não um caminho).
O script é chamado vlink
, então uma invocação seria, por exemplo:
vlink plug foo
O nome do diretório ( foo
no exemplo acima) precisa ser um dos subdiretórios de um diretório específico em outro lugar do meu sistema.
Como existem apenas três comandos possíveis ( plug
/ unplug
/ replug
) e um conjunto específico de nomes de diretórios possíveis para o terceiro argumento, gostaria de fornecer algum preenchimento de tabulação para ele.
Estou um pouco familiarizado com a escrita de scripts de conclusão Bash, mas existe uma maneira de fornecer comandos de conclusão para um executável que não está em meu $ PATH e deve ser executado apenas a partir de seu diretório pai?
Isso pode funcionar:
Substitua
/some/dir
pelo diretório que contém os subdiretórios de interesse. (Estou assumindo que seus nomes de diretório não têm novas linhas neles.)COMP_CWORD
é o índice da palavra que está sendo completada (0 sendo o nome do comando)Então, usamos
compgen
:-W
, e