Escaping a dollar sign in Unix inside the cat command

You can use regular quoting operators in a here document:

$ cat <<HERE
> foo \$(bar)
> HERE
foo $(bar)

or you can disable expansion in the entire here document by quoting or escaping the here-doc delimiter:

$ cat <<'HERE'  # note single quotes
> foo $(bar)
> HERE
foo $(bar)

It doesn't matter whether you use single or double quotes or a backslash escape (<<\HERE); they all have the same effect.


Backslash ('\') works for me. I tried it and here is the output:

$ cat <<EOF > tmp.txt
foo \$(abc)
EOF

$ cat tmp.txt 
foo $(abc)

I tried it on bash. I'm not sure whether you have to use a different escape character in a different shell.