Dê uma olhada na página man bash. Há uma seção inteira sobre cotação. Porque este licenciado sob a GFDL, que não é compatível com a licença CC-BY-SA usada aqui, não vou citar a coisa toda, mas realmente lendo essa é a resposta mais definitiva .
Em resumo, as aspas simples param toda a interpretação - a string é renderizada literalmente. Aspas duplas deixam $
(sinal de dólar), '(backquote) como especial e \
(barra invertida) como especiais quando seguidos por alguns outros caracteres. E !
será tratado especialmente se o recurso de expansão de histórico estiver ativado (o que é por padrão).
No uso prático, o $
é o grande problema, já que muitas vezes você pode querer as várias expansões que ele permite (variáveis e mais), enquanto ainda impede que o shell atrapalhe a maior parte da linha de comando.