Czy mogę symulować potwierdzenie za pomocą grep z odpowiednią kombinacją opcji?


2

Mam zainstalowaną ack-grep na mojej lokalnej maszynie i uważam, że jest ona niezbędna do szybkiego „potwierdzenia” przez bazę kodów podczas debugowania.

Jednak na moim tanim hostingu współdzielonym nie ma potwierdzenia-grep. W jednym z referencji na stronie betterthangrep.com wspomniano:

Rube Goldberg bałagan find / grep / xargs

co brzmi jak to, czego potrzebuję, ale przychodzi z przeciwnego kierunku.

Czy ktoś wie, co to może być?

Odpowiedzi:


4

Właściwe polecenie ma nazwę ack. (Niektórzy dystrybutorzy mogli zmienić jego nazwę z ack-greppowodu kolizji nazw). Oficjalna strona internetowa to rzeczywiście http://betterthangrep.com i ma długą listę metod instalacji, nawet w przypadku braku Twojej dystrybucji ack.

Na przykład możesz pobrać App :: Ack z CPAN Perla (używając cpanminus ):

cpanm --sudo App::Ack

Lub uzyskaj wersję „samodzielną”:

curl http://betterthangrep.com/ack-standalone > ~/bin/ack
chmod +x ~/bin/ack

4

Tak, możesz to zrobić ręcznie, a tak naprawdę powinieneś wiedzieć, jak to zrobić ręcznie. Na przykład, jeśli robiłeś

ack function_name --php

możesz to zrobić (właściwie) jako

find . -name '*.php' | xargs grep function_name

Można go pisać dłużej i można z niego utworzyć alias lub skrypt powłoki, ale dobrze jest wiedzieć, jak to zrobić, tylko ze względu na to, jak to zrobić.

Twoje pytanie sprawia, że się uśmiecham, bo zwykle to, co słyszę to stara gwardia Unix greybeards mówiąc: „Nie trzeba ack, wystarczy użyć find, xargsi grep”. Fajnie jest widzieć, jak ktoś podchodzi do niego z innej strony.


1
Okropnie blisko „Nie potrzebujesz tego nowego koła, po prostu wymyśl własne”.
grawity

1
Z pewnością jest, ale to bitwa, w którą przestałem się angażować. Jeśli ludzie chcą to zrobić po staremu, bo tak właśnie Ken i Dennis mówią, że powinno być, to zależy od nich.
Andy Lester
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.