Uma maneira seria usar egrep
ou grep -E
assim:
rpm -qa | egrep -i '.*gcc.*'
Isso usa a string de pesquisa fornecida como uma expressão regular, em que o ponto (.) representa qualquer caractere e o asterisco (*) representa um ou mais desses caracteres.
O que eu acredito que você está tentando usar com rpm -qa | grep -i *gcc*
é um recurso da maioria dos shells chamados globbeam de nome de arquivo. Essa técnica não funciona com o grep. Ele pressupõe que você quer tudo com gcc
na string, como em seu primeiro exemplo, sem a necessidade de especificá-lo explicitamente.
Editar:
A diferença entre *gcc*
e .*gcc.*
é a primeira, na verdade, é um erro de sintaxe com o egrep, embora possa não lhe dizer. O asterisco (*) é um modificador que informa ao analisador de expressões regulares que você está interessado em zero ou mais do caractere anterior. Na primeira expressão, não há nenhum caractere anterior porque a aspa simples (') não conta.