Como @steeldriver apontou, o problema é o redirecionamento do io mal construído. Aqui está o porquê:
cpp > 2 & 1
O processo cpp é colocado em segundo plano com saída redirecionada para um arquivo chamado "2", o "e" comercial também é um separador de comando como o ponto e vírgula, então o próximo comando na linha é "1", que o shell não pode encontrar.