I just implemented zsh tab-completion functionality for sysdig:


The patch was merged to sysdig upstream.

It's fairly nice, and makes sysdig easier to use for those who don't yet have all the knobs memorized, such as myself. I complete on

  • commandline options
  • commandline option arguments
  • chisel names
  • chisel arguments
  • filter field names

Some of those are hard-coded in the completion script, and some are reported by the sysdig executable itself. Having written this I'm now acutely aware of missing similar functionality in tcpdump and perf. Both of those have some tab completion, but do not complete on event types. If they did, writing things like tcpdump filters would be much easier. That's a good thing to add at some point.

Another interesting discovery is that it is apparently normal for zsh completion scripts to live in the zsh repository, not in the repository of the thing being completed. So in this case I apparently went against to grain by contributing my script to sysdig instead of zsh. This feels right, though. But if I make those additions to tcpdump and/or perf completions, those will go to the zsh people.