A resposta de Jon Reinhold é ótima, mas há uma solução muito mais poderosa que vou sugerir. Também tenho um comentário sobre uma pegadinha na resposta de Jon, mas não tenho reputação suficiente para poder comentar diretamente, então @ Jon Reinhold, se você ler isso, envie meu comentário abaixo.
O Bash inclui um comando fc
, que assume como parâmetros os números de linha da lista do histórico do bash. Em seguida, abre o editor padrão com essas linhas como texto. Nesse ponto, você pode opcionalmente editar as linhas. Então, quando você sai do editor, o bash executa essas linhas!
Um exemplo de edição que você pode querer fazer é anexar a todos, exceto a última linha, algo como "; read -p" next ... "Isso fará com que o bash execute cada linha e avise antes de continuar.
Comentário para Jon Reinhold: Ótima resposta, mas você deve qualificá-la porque se o usuário definiu a variável bash HISTCONTROL para incluir
erasedups
, depois de executar C-o
o usuário ficará confuso porque, em vez de o próximo comando esperado no histórico ser exibido, aquele depois disso será exibido. Isso ocorre porque o bash excluiu a instância original do comando executado e, portanto, todos os comandos posteriores mudaram uma linha, ie. para um número de índice inferior na lista do histórico.