I’ve struggled with xargs conceptually for long time, but actually its pretty easy conceptually. For commands that don’t read from stdin but do take arguments, like
kill, you can turn newline separated values from stdin in into arguments.
Piping to echo does not work.
> echo 123 | echo # nothing
Using xargs it does.
> echo 123 | xargs echo 123
xargs can also read a file with the
-a flag, turning each line of the file into an argument.
> echo "123\nabc" > test.txt > cat test.txt 123 abc > xargs -a test.txt echo 123 abc
H/T Brian DunnTweet