Dans Bash, de temps en temps, je tape une liste de commandes et je frappe Enter, et je ne réalise que plus tard qu'il y a une erreur avec une commande vers la fin de la liste. Je sais que si j'appuie sur Ctrl+, Ccela mettra fin à la commande en cours d'exécution et annulera le reste de la liste. Existe-t-il un moyen d'annuler le reste de la liste sans terminer la commande en cours d'exécution?
Par exemple, disons que j'ai tapé quelque chose comme
foo; bar
ou
foo && bar
où foo
est une commande de longue durée qu'il est très important de ne pas interrompre, et bar
fait quelque chose d'irréversible et indésirable (par exemple, shutdown -h now
ou rm -rf /
). Pendant qu'il foo
est toujours en cours d'exécution, existe-t-il un moyen général de dire au shell de laisser foo
finir mais de ne pas courir bar
après? (Oui, je pourrais modifier les autorisations bar
afin qu'il ne soit pas exécutable, mais ce n'est pas particulièrement pratique si je souhaite utiliser bar
quelque chose comme rm
ça en attendant, et cela ne fonctionnera pas si je ne suis pas propriétaire bar
ou s'il bar
s'agit d'un module intégré.)
bar
commande poursome_command
:^bar^some_command
avant d'être exécutée.