Do you know the
printf trick in shell?
printf repeats its format pattern if you give it more arguments than the pattern has.
You can use this for all kinds of tricks:
$ printf "/some/path/%s " file1 file2 file3 file4 /some/path/file1 /some/path/file2 /some/path/file3 /some/path/file4 $ printf "%s=%s\n" a 1 b 2 c 3 d 4 a=1 b=2 c=3 d=4
It’s is really nice when you combine it with some other output:
$ printf -- "-p %s " $(ps aux | grep fcgiwr[a]p | f 2) -p 10613 -p 10615 -p 10616 -p 10617 -p 10619 -p 10620 -p 10621 -p 10622 -p 10623
Say I wanted to pass all the pids of a program that forks a lot to
strace. I could do:
strace $(printf -- "-p %s " $(ps aux | grep fcgiwr[a]p | f 2))
An aside, you may have noticed that non-standard
f command in the
ps pipeline. I got that from here a long time ago (2008 according to the file’s timestamp) and it’s really fantastic—perfect for all sorts of unixy things that output tables (
ls -l, etc).