grep $'\n'
とするといかなる入力行もマッチするのですが
これは行末の改行にマッチするということですよね?

ところが
echo -n 'abc' | grep $'\n'
とやってもマッチしてしまって改行が存在しないはずなので
解せないのですがこれはどういうことでしょうか

grepコマンドは改行のない入力でも自前で改行つけた後に
検索するんでしょうかね