O ?
no seu comando é um shell glob. O shell expande esse glob para passar três parâmetros para o comando grep
, os nomes de cada um dos três arquivos que está sendo impresso. O comando grep
detecta que você está pesquisando vários arquivos, de modo que, antes do nome do arquivo, a expressão que você está procurando foi encontrada na impressão real da expressão. Como seu padrão é um único ponto ( .
), grep
interpreta esse padrão como "qualquer caractere único", o que cada linha dos três arquivos satisfaria. Cada um desses três arquivos tem apenas uma linha, então imprime uma linha para cada arquivo. Pré-adicionando o nome do arquivo, você obtém a saída que você vê acima.