1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-03 15:18:01 +00:00
Files
til/unix/xargs-ignores-alias-substitution-by-default.md

34 lines
914 B
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 Ignores Alias Substitution By Default
I have a number of aliases set up in my shell's RC file. For instance, I use
`nvim` as my main editor, but because of muscle memory, I've aliased `vim` to
`nvim`.
```bash
alias vim
vim=nvim
```
So, I was surprised when I ran the following `xargs` command.
```bash
rg 'some pattern' -l | xargs vim
```
It opened the matching files in `vim` rather than `nvim`.
The reason for this is that `xargs` is a separate function that does not have
an internal concept of aliases that need to be substituted.
There is, however, a trick built in to `alias` that we can use. By leaving a
trailing space in an alias, we tell the shell to check for an alias
substitution to expand in the following word.
So, I can alias `xargs` to `'xargs '` and it will respect my `vim` alias.
```
alias xargs='xargs '
```
[source](https://unix.stackexchange.com/a/244516/5916)