Because I'm lazy.... any time I want to use grep, I want it to be grep -n --colour. Is there a way to permanantly map this?
4 Answers
In your $HOME/.bashrc file, add:
export GREP_OPTIONS="-n --color"
This will work with egrep
too and in aliases that use grep.
Update: GREP_OPTIONS is deprecated from grep 2.21 on and if you use this solution you will see the following warning:
grep: warning: GREP_OPTIONS is deprecated; please use an alias or script
The best solution is to therefore follow maco's advice in his answer. Or switch to using ag, which outputs in color by default.
-
-
4
-
1
-
1
-
@marco: you're right (with bash) - I was thinking of csh, where they can't. Oops!– richqAug 13, 2010 at 20:45
Edit ~/.bash_aliases Add a line that says:
alias grep='grep -n --color'
~/.bash_aliases is automatically included by ~/.bashrc if it exists
-
8Or add the line in
.profile
if you want it to work in all shells not just bash. Aug 13, 2010 at 22:16 -
2this won't work with xargs eg:
find /usr/share -name '*.txt' |xargs grep testing
– rfabbriMay 27, 2016 at 15:22
you can modify the file .bashrc located in your home directory defining an alias, which will override any default setting:
alias grep='grep -n --color'
after the change close and open the terminal again because the file is read only when you open the terminal.
If you take a look on the file .bashrc you will found more default aliases like:
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'
Create a script in addition to an alias mentioned in the other answers. An alias by itself won't always work, and a script layer is fast enough for human readable output anyways.
Choose a short name, like cgrep
:
#!/bin/sh
grep --color -n "$@"
Place it in your path, say ~/bin
(if you read UPE this is in your path :). Then stuff like this will work:
find /usr/share -name '*.txt' | xargs cgrep testing
I'm still not so happy, I too wanted grep to always color when stdout to a terminal without selectively typing cgrep.