I end up typing
grep -Rni pattern .
and awful lot. How do I make this into an alias like
alias gr='grep -Rni $@ .'
Running that gives:
$ gr pattern
grep: pattern: No such file or directory
Even though the alias looks fine:
$ type gr
gr is aliased to `grep -R $@ .'
It seems that the $@ and the . get swapped when it's actually executed.
To see a list of aliases set up on your linux box, just type alias at the prompt. You can see there are a few already set up on a default Redhat 9 installation. To remove an alias, use the unalias command.
Try this:
$ alias gr='grep -Rnif /dev/stdin . <<<'
$ gr pattern
./path/file:42: here is the pattern you were looking for
This also works:
$ alias gr='grep -Rnif - . <<<'
make a function instead of alias. Save it in a file eg mylibrary.sh and whenever you want to use the function, source the file
eg mylibrary.sh
myfunction(){
grep -Rni ...
}
#!/bin/bash
source mylibrary.sh
myfunction
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With