Se command4 estiver atualmente em execução, é possível fazer isso de forma bem direta:
^Z
$ fg && right_command5 && command6
Isto é essencialmente o que você já estava fazendo para começar command4 em primeiro lugar. wrong_command5 e o restante será substituído e nunca executado.
Eu acho que esse comportamento vai ser inesperado para você, então continue lendo para uma explicação de onde as coisas não funcionam da maneira que você achava que seriam.
No entanto: observe que sua sequência de comando original não faz o que você acha que faz . Quando você faz:
$ command1 && command2 && command3
Running command1 ...
Running command2 ...^Z
[1]+ Stopped
$ fg && command4
então command2 será retomado, mas o resto da cadeia não será . Parar command2 com Ctrl-Z significa que ele sai anormalmente com SIGTSTP (-20). Como command2 sai sem sucesso, && produz curto-circuito e command3 nunca será executado. command4 será iniciado imediatamente após o final do command2 retomado.
Você pode assistir a esse comportamento em ação substituindo o && por || :
$ command2 || echo Running command3, exit was $?
^Z
[1]+ Stopped command2
Running command3, exit was 148
$
Você tem que listar toda a cadeia subseqüente de comandos quando você retomar, se você quiser o comportamento que você está procurando. Alternativamente, se você quiser parar e retomar cadeias de comando inteiras, você precisa executá-las em um subshell:
$ (command1 && command2 && command3)
^Z
$ fg
Nesse caso, porém, não há como interceder e substituir um comando.