GNU
tar
accepts an external program to perform compression, via the option --use-compress-program
. I'd normally want pigz
if it's available, but if not, fallback to gzip
. Is there a compact way to get represent this? Yes!
which --skip-alias --skip-functions pigz gzip 2>/dev/null | head -1GNU
which
accepts multiple arguments, printing out the resolution for each as they're found or an error if not. GNU which
also allows finding only full-fledged binaries, not aliases or functions. This is exactly what we want: list the paths to these programs, in the order I gave, then pluck the first one.