Esto se explica muy bien en la sección correspondiente del manual de bash. Brevemente, cualquier cosa entre comillas simples se interpreta literalmente. Así por ejemplo:
$ echo '$SHELL'
$SHELL
$ echo '{1..3}'
{1..3}
Compare eso con las versiones no citadas:
$ echo $SHELL
/bin/bash
$ echo {1..3}
1 2 3
Las comillas dobles permiten la expansión variable (también la expansión del historial y algunas otras cosas). Básicamente, los usa cuando se trata de algo que desea ver ampliado. Por ejemplo:
$ echo "$SHELL"
/bin/bash
$ echo "!!"
echo "echo "$SHELL""
echo /bin/bash
En otras palabras, las comillas simples protegen completamente una cadena del shell, mientras que las comillas dobles protegen algunas cosas (espacios, por ejemplo) pero permiten que las variables y los caracteres especiales se expandan / interpreten correctamente.
\siempre se trata literalmente cuando se incluye entre comillas simples, incluso si precede a a'. Después de una apertura', la siguiente'siempre se interpreta como la cita de cierre. Algo parecido a'las comillas en una cadena entre comillas simples se puede lograr al finalizar las comillas, escapar'individualmente y comenzar a citar nuevamente. Es decir, aunque\'no funciona entre los'caracteres iniciales y finales ,'\''sí. (Vea la corrección de Gilles en una de mis publicaciones cuando cometí el mismo error para más detalles.)