как экранировать одинарные кавычки
В строке определённой в одинарных кавычках нет возможности ничего экранировать -- все символы являются литералами, а одинарная кавычка заканчивает строку. В строке определённой в двойных кавычках одинарную кавычку можно экранировать бэкслешем, а можно не экранировать -- она не является каким-то специальным символом.
Оригинальный запрос можно написать так:
grep -rnw /home/user/ -e "\$_GET['s']"
но в любом случае он выглядит проблематично:
$
в регулярке -- это конец строки, квадратные скобки -- это символ из набора...