Die Shell interpretiert das \$
und leitet es an grep as als $
Zeilenende-Zeichen weiter. Wenn Sie davon ausgehen, dass Ihre Zeile ein Ende hat, wird sie übereinstimmen :-)
Wenn Sie ein aktuelles $
Ergebnis in grep abgleichen möchten, verwenden Sie eine der folgenden Optionen:
grep \\\$ grep '\$'
Im ersteren, interpretiert die Schale \\
wie \
und \$
wie $
, was \$
. Im letzteren wird es überhaupt nicht interpretiert.
Was Ihre Frage anbelangt, weshalb \$
das Dollarzeichen eher der zweistelligen Sequenz entspricht, verwenden reguläre Ausdrücke, wie sie beispielsweise grep
verwendet werden, Sonderzeichen für bestimmte Zwecke. Einige davon sind:
$ end of line ^ start of line . any character + 1 or more of the preceeding pattern * 0 or more of the preceeding pattern between n and m of the preceeding pattern [x-y] any character between x and y (such as [0-9] for a digit).
zusammen mit vielen anderen.
Wenn Sie ein Literla-Zeichen zuordnen möchten, das normalerweise als Sonderzeichen behandelt wird, müssen Sie es entziehen, damit grep
es als normales Zeichen behandelt wird.