Odkryłem, że szukam za pomocą grep bez określania ścieżki, jakby grep -r 'mytext'
trwało to nieskończenie długo. Tymczasem jeśli szukam z podaną ścieżką, grep -r 'mytext' .
to natychmiast znajdzie to, czego potrzebuję. Więc jestem ciekawy, w pierwszej formie, w którym katalogu grep szuka?
UDATE: wersja grep: grep (GNU grep) 2.10
foomytextbar
po uruchomieniu wpisz (a następnie Enter)grep -r 'mytext'
.grep
jest ten król . Z GNUgrep
używam w systemie Linuxgrep -r 'mytext'
igrep -r 'mytext' .
robi to samo: przeszukuj rekurencyjnie, zaczynając od bieżącego katalogu. Gdy-r
używany jest przełącznik, GNUgrep
nie przeszukuje STDIN.grep
2.12: pastebin.com/L4my26QS W międzyczasie znalazłem to w pliku NEWS dotyczącym wersji 2.11 (2012-03-02): „Jeśli nie podano argumentu pliku i podano wiersz polecenia -r lub równoważną opcję , grep przeszukuje teraz katalog roboczy. Poprzednio grep zignorował -r i przeszukał standardowe wejście nierekurencyjnie. -r znalezione w GREP_OPTIONS nie ma tego nowego efektu. "Odpowiedzi:
Właściwie nigdzie nie szuka. Oczekuje na wejście ze standardowego wejścia.
Spróbuj tego:
kiedy wpiszesz wiersz zawierający „foo” i naciśniesz Enter, linia ta zostanie powtórzona, w przeciwnym razie kursor zostanie przeniesiony do nowej linii, ale grep nic nie wydrukuje.
źródło
grep -r PATTERN
nowsza wersja GNU grep nie będzie czytać standardowego wejścia, ale szuka wzorca w bieżącym katalogu (zobacz zatwierdzenie ). Ta zmiana ma sens, ponieważ prawdopodobnie nie chcesz przeszukiwać standardowych danych wejściowych po określeniu-r
flagi.Dokładnie tak jak poprzednia odpowiedź Maćka:
Jednak możesz napisać do standardowego już działającego programu, jeśli masz / proc dostępny przez przesłanie danych do jego pierwszego deskryptora:
W jednym uruchomieniu terminalu
i zobacz, jak czeka bez końca ... W innym terminalu wpisz:
zobacz pierwszy terminal wydrukuj cześć i swoją nazwę użytkownika.
źródło