On Thu 22 Apr 2021 at 21:38:53 (+0700), Victor Sudakov wrote: > David Wright wrote: > > Victor Sudakov wrote: > > > > > > I have an example app which can be run only as "app3 -h test1 -s foo" or > > > "app3 -h test2 -s bar". So I decided to provide it with a small manual > > > completion for convenience. > > > > > > [vas@test2 ~]$ ./list.sh > > > -h test1 -s foo > > > -h test2 -s bar > > > [vas@test2 ~]$ complete -C ./list.sh app3 > > > [vas@test2 ~]$ > > > > > > The result however is discouraging, the completion mechanism won't add > > > whole lines of parameters, it's trying to split on spaces (here I press > > > <TAB> several times: > > > > > > [vas@test2 ~]$ app3 -h -h -h test > > > > > > Can you please give a hint how to make it complete "app3" with either > > > "-h test1 -s foo" or "-h test2 -s bar" as a whole? > > > > > > I would not like to make all this too complicated, write complex > > > completion funcions if possible. A static (-W) completion would be even > > > better. > > > > Perhaps: > > > > alias app3a='app3 -h test1 -s foo' > > alias app3b='app3 -h test2 -s bar' > > No, not alias, I'd like to do it via bash completion. I may want to make > it dynamic eventually, the problem is in the spaces.
It's claimed that you can overcome this, in https://stackoverflow.com/questions/11070370/bash-completion-for-strings-with-spaces-and-punctuation but I'd be balancing the possibility of side-effects with redefining Space against the benefits of completing a few strings. I also don't understand what you mean by "dynamic", particularly as you wrote "A static (-W) completion" above. You could always generate lists of aliases dynamically, too. Cheers, David.