Archiwum

Posty oznaczone ‘grep’

Dostosowanie grep-a do SVN i Symfony

Luty 16th, 2009 zergu Brak komentarzy

Jednym z nieocenionych narzędzi podczas programowania jest grep, który (jakby ktoś nie wiedział) służy do wyszukiwania treści w plikach tekstowych.

Jednak, jak każde narzędzie, warto go dostosować do własnych potrzeb. Ja najczęściej stosuję go do przeszukiwania projektów będących pod kontrolą Subversion (SVN), poprzez taką instrukcję:

grep -RIin "szukane" * --exclude-dir=\.svn

Dla wyjaśnienia: -R — szukanie rekursywne w podkatalogach, -I — pomijanie plików binarnych, -i — niewrażliwość na wielkość znaków, -n — wyświetlenie nr linii w wyniku.

Oczywiście wpisywanie tego za każdym razem nie ma nic wspólnego z wygodą, dlatego warto sobie utworzyć funkcję dla powłoki np. w pliku .profile (średniki na końcu są wymagana dla Basha, Zsh ich nie potrzebuje):

function g { grep -RIn $1 * --exclude-dir=\.svn ; }
function gi { grep -RIin $1 * --exclude-dir=\.svn ; }

Dzięki czemu wystarczy wykonać:


[src]> g fuck
arch/i386/kernel/cpu/cpufreq/powernow-k7.c:558: * Some Athlon laptops have really fucked PST tables.
arch/i386/kernel/cpu/mtrr/generic.c:70:/*  Some BIOS's are fucked and don't set all MTRRs the same!  */
…

Z racji tego, że większość projektów piszę w Symfony, stworzyłem sobie dodatkową wersję tej funkcji:

function sfg { grep -RIn $1 lib/model apps/ --exclude-dir=\.svn ; }

Odpalając ją w głównym katalogu projektu, można łatwo przeszukać wszystkie warstwy aplikacji (model, widoki, kontrolery i przy okazji parę innych).

Jest też możliwość włączenia „na stałe” niektórych opcji, poprzez wyeksportowanie zmiennej środowiskowej o nazwie GREP_OPTIONS, np.:

export GREP_OPTIONS="--exclude-dir=\.svn"

Ale ja osobiście tego nie stosuję.

Kategorie:Różne Tagi:, ,