20

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?

Tree77
  • 303

4 Answers4

33

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.

richq
  • 954
30

Edit ~/.bash_aliases Add a line that says:

alias grep='grep -n --color'

~/.bash_aliases is automatically included by ~/.bashrc if it exists

maco
  • 15,892
2

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'

1

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.

rfabbri
  • 71
  • 7