Co robi grep, używając wyszukiwanego znaku dolara?

3

Chciałem znaleźć $featurediconzmienną w moich plikach php i uruchomiłemgrep -ir "$featuredicon"

Zrozumiałem, że znak dolara jest zastrzeżoną postacią w skorupce. Ale co to właściwie robi? Czy zmodyfikowałem moje pliki php? Obawiam się, że zrobiłem coś złego ...

następnym razem ucieknę grep -ir "\$featuredicon"

Der Hochstapler
źródło
Witamy w Super User. Pamiętaj, aby zaakceptować odpowiedź, która faktycznie odpowiada na twoje pytanie , co niekoniecznie jest pierwszą odpowiedzią, którą otrzymujesz.
Michael Hampton

Odpowiedzi:

4

Powodem, dla którego wymieniono każdą linię każdego pliku, było zmienne podstawienie powłoki.

Kiedy zadzwonisz

grep -ir "$featuredicon" *

bashoceni to. Przeszuka zmienną $featurediconi umieści ją w poleceniu. Zgadnij, co $featurediconnajprawdopodobniej jest?

Racja, nic. Więc tak naprawdę to robisz:

grep -ir "" *

I to pasuje do każdej linii każdego pliku.

Stara odpowiedź

Znak dolara ( $) jest symbolem zastępczym end-of-linew wyrażeniu regularnym (zakładam, że to samo dotyczy grep).

Jeśli chcesz wyszukać znak dolara, użyj '\$'.

Pamiętaj, aby sprawdzić pytanie StackOverflow: Jak grep dla symbolu dolara ($)?

Der Hochstapler
źródło
Ty, uciekając z części, sam to rozgryzłem.
Byłem po prostu ciekawy, co to zrobiło z moimi plikami php lub dlaczego wypisuje wszystko na terminal.
@ SandroDzneladze: Zaktualizowałem moją odpowiedź, aby odpowiedzieć na Twoje szczególne obawy. Źle interpretowałem twój problem.
Der Hochstapler
1

grepnie może samodzielnie modyfikować plików; nie spowodował żadnych szkód.

Ignacio Vazquez-Abrams
źródło
1
Ale co to robi? dlaczego wydrukował wszystkie linie z każdego pliku? A jak używać $ w grep do jakiego celu? ty za uspokojenie mojego umysłu :)
1
To nie jest odpowiedź i czuję się głupio, mówiąc ci to: P
Der Hochstapler
1
@Oliver: „Czy zmodyfikowałem pliki php?”
Ignacio Vazquez-Abrams
@ IgnacioVazquez-Abrams: Chyba masz rację. Przepraszamy za zbyt szybkie ocenianie.
Der Hochstapler