Zamień komendę grep na grep -n --colour?

17

Ponieważ jestem leniwy ... za każdym razem, gdy chcę użyć grep, chcę, aby był grep -n --colour. Czy istnieje sposób, aby to na stałe zmapować?

Tree77
źródło
6
+1 za „Bo jestem leniwy ...”. Czy kiedykolwiek rozważałeś karierę jako programista? :)
dr Hannibal Lecter

Odpowiedzi:

31

W pliku $ HOME / .bashrc dodaj:

export GREP_OPTIONS="-n --color"

Działa to egreprównież z aliasami używającymi grep.

Aktualizacja : GREP_OPTIONS jest przestarzałe od grep 2.21 i jeśli skorzystasz z tego rozwiązania, zobaczysz następujące ostrzeżenie:

grep: warning: GREP_OPTIONS is deprecated; please use an alias or script

Najlepszym rozwiązaniem jest zatem zastosowanie się do rad Maco w jego odpowiedzi . Lub przejdź do używania ag , który domyślnie wyświetla kolor.

richq
źródło
szacunek.
myusuf3
4
Szacunek, ale bez entuzjazmu, co? ;-)
richq
1
Aliasów można używać po fajnej fajce. Po prostu się nie powtarzają.
maco
1
Hej, hej, głosowałem. Lubię to bardziej niż alias.
Dmitriy Likhten,
@marco: masz rację (z bash) - myślałem o csh, gdzie nie mogą. Ups!
richq
29

Edytuj ~ / .bash_aliases Dodaj wiersz, który mówi:

alias grep='grep -n --color'

~ / .bash_aliases jest automatycznie dołączane przez ~ / .bashrc, jeśli istnieje

maco
źródło
8
Lub dodaj linię, .profilejeśli chcesz, aby działała we wszystkich powłokach, a nie tylko bash.
LassePoulsen,
1
to nie zadziała z xargs np .:find /usr/share -name '*.txt' |xargs grep testing
rfabbri
2

możesz zmodyfikować plik .bashrc znajdujący się w twoim katalogu domowym, definiując alias, który zastąpi dowolne ustawienie domyślne:

alias grep = 'grep -n --color'

po zmianie zamknij i ponownie otwórz terminal, ponieważ plik jest odczytywany tylko po otwarciu terminalu.

Jeśli spojrzysz na plik .bashrc, znajdziesz więcej domyślnych aliasów, takich jak:

alias ll = 'ls -l'

alias la = 'ls -A'

alias l = „ls -CF”

Paolo Sammicheli
źródło
1

Utwórz skrypt oprócz aliasu wymienionego w innych odpowiedziach. Sam alias nie zawsze będzie działał, a warstwa skryptu jest wystarczająco szybka, aby uzyskać czytelny dla człowieka wynik.

Wybierz krótką nazwę, na przykład cgrep:

#!/bin/sh
grep --color -n "$@"

Umieść to na swojej ścieżce, powiedz ~/bin(jeśli czytasz UPE, to jest na twojej ścieżce :). Wtedy takie rzeczy będą działać:

find /usr/share -name '*.txt' | xargs cgrep testing

Nadal nie jestem tak szczęśliwy, ja też chciałem, aby grep zawsze kolorował, gdy stdout do terminala nie wybiórczo wpisuję cgrep.

rfabbri
źródło