Suppose I have a file abc.txt which contains line ab*cd. When I grep that pattern ab*cd with quotes but without escaping
first of all, you should keep in mind: regex =/= glob
* has special meaning in regex. You have to escape it to match it literally. without escaping the *, grep tries to match ab+(any number of b)+c
for example:
abbbbbbbbbbbbc
Use the flag -F to search for fixed strings -- instead of regular expressions. From man grep:
-F, --fixed-strings
Interpret PATTERN as a list of fixed strings, separated by
newlines, any of which is to be matched. (-F is specified by
POSIX.)
For example:
$ grep -F "ab*c" <<< "ab*c"
ab*c