A few days ago I learned more about the
For a brief explanation,
xargs will receive a chunk of text and transform it in a list of arguments and pass it to a command that you can specify.
For instance, if you write in the terminal:
echo -e "file1\nfile2"
You will see this result:
We now could pipe this into
xargs and do something with it, say, create files with those names:
echo -e "file1\nfile2" | xargs touch
We just created two files whose names are file1 and file2.
There are many things you could do with xargs, write
xargs -h to see more (the
-I flag is specially interesting).
But what happened today was that I decided I wanted to open all files that had a conflict after an attempted
git rebase -i command.
To do that, we first have to find a way to list all the files with a conflict. I'm pretty sure there is nothing git can't do, and of course what we want is very possible.
git diff can receive the flag
--name-only, which will give you just the names of the files that
git diff would have looked at.
user@pc:~$ git diff --name-only app/this-guy config/this-other-guy user@pc:~$
This is just what we wanted! We can now easily pipe it into
xargs and call a code editor, for example vim:
git diff --name-only | xargs vim
Xargs can be very useful, this is just one use case. Maybe you want to append a specific extension to a bunch of files? You could use find, ls and grep, just to pass them to xargs with a mv command, for instance.
I hope someone else also learns a little with my little "playing around in terminal" thing.
Thanks for reading and have a nice day (: