2019-05-24 22:38 UTC-0700 ~ Andrii Nakryiko <andriin@xxxxxx> > Auto-complete BTF IDs for `btf dump id` sub-command. List of possible BTF > IDs is scavenged from loaded BPF programs that have associated BTFs, as > there is currently no API in libbpf to fetch list of all BTFs in the > system. > > Suggested-by: Quentin Monnet <quentin.monnet@xxxxxxxxxxxxx> > Signed-off-by: Andrii Nakryiko <andriin@xxxxxx> > --- > tools/bpf/bpftool/bash-completion/bpftool | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/tools/bpf/bpftool/bash-completion/bpftool b/tools/bpf/bpftool/bash-completion/bpftool > index 75c01eafd3a1..9fbc33e93689 100644 > --- a/tools/bpf/bpftool/bash-completion/bpftool > +++ b/tools/bpf/bpftool/bash-completion/bpftool > @@ -71,6 +71,13 @@ _bpftool_get_prog_tags() > command sed -n 's/.*"tag": "\(.*\)",$/\1/p' )" -- "$cur" ) ) > } > > +_bpftool_get_btf_ids() > +{ > + COMPREPLY+=( $( compgen -W "$( bpftool -jp prog 2>&1 | \ > + command sed -n 's/.*"btf_id": \(.*\),\?$/\1/p' | \ > + command sort -nu )" -- "$cur" ) ) > +} Thanks! It works well. It looks like the "sort -nu" is not required, however? Bash completion on my system seems to run the equivalent of "sort -u" on the results anyway, ignoring the ordering you made just before. As I understand this is what completion always does, unless we pass "-o nosort" to "complete". E.g. I get the same following output: 1 1234 191 222 25 When completing with this function: _bpftool() { COMPREPLY+=( $( compgen -W "$( \ command echo '1 1 1 191 1234 25 222')")) } complete -F _bpftool bpftool or with that one: _bpftool() { COMPREPLY+=( $( compgen -W "$( \ command echo '1 1 1 191 1234 25 222' | \ command sort -nu )" ) ) } complete -F _bpftool bpftool Could you double check you have the same thing on your setup, please? If so we can just remove the "sort -nu". Quentin