1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-03 15:18:01 +00:00
Files
til/unix/xargs-default-command-is-echo.md
2023-07-07 10:11:29 -05:00

46 lines
1.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# xargs Default Command Is echo
With the `fd` command, all the found files are output line by line like so.
```bash
fd '.*.md' --max-depth=1
CONTRIBUTING.md
README.md
TODO.md
built-in-commands.md
newsletter.md
tailwind.md
```
I can normalize the whitespace, squishing everything to be separated by single
spaces by piping it to `xargs`. This is equivalent to call `xargs` with `echo`.
That is because `echo` is the default command that `xargs` uses when another
command isn't given.
```bash
fd '.*.md' --max-depth=1 | xargs
CONTRIBUTING.md README.md TODO.md built-in-commands.md newsletter.md tailwind.md
fd '.*.md' --max-depth=1 | xargs echo
CONTRIBUTING.md README.md TODO.md built-in-commands.md newsletter.md tailwind.md
```
We can see further evidence of that by using the `-n` flag with `2` to have it
process results two at a time. In either case, each pair of file names is
echo'd before the next two are processed.
```bash
fd '.*.md' --max-depth=1 | xargs -n2
CONTRIBUTING.md README.md
TODO.md built-in-commands.md
newsletter.md tailwind.md
fd '.*.md' --max-depth=1 | xargs -n2 echo
CONTRIBUTING.md README.md
TODO.md built-in-commands.md
newsletter.md tailwind.md
```
See `man xargs` for more details, as well as this [excellent
article](https://abhinavg.net/2022/06/04/xargs-spaces/).