Solución 1:
for DIR in * ; do rsync -a $DIR example.com:somewhere/ || break; done
Esto también saldrá del bucle si una ejecución de rsync individual falla por algún motivo.
Solución 2:
Para ampliar la respuesta de Dennis, su código podría verse así:
trap "echo Exited!; exit;" SIGINT SIGTERM
Para ver un ejemplo de trabajo (que involucra rsync), consulte http://gist.github.com/279849.
Solución 3:
Puedes tenderle una trampa a Control-C.
trap <command> SIGINT
ejecutará el command
cuando se presiona Control-C. Solo pon el trap
declaración en algún lugar de su secuencia de comandos en un punto en el que desea que sea efectiva.
Solución 4:
- Presione
Ctrl-Z
para suspender el guión; kill %%
Créditos, explicaciones y más detalles en esta respuesta.
Solución 5:
Cuando coloca una cadena de comandos entre paréntesis, la cadena actuará como un solo proceso, recibirá el SIGINT y terminará cuando presione Ctrl -C :
(for DIR in * ; do rsync -a $DIR example.com:somewhere/ ; done)
¡Pero! En el caso del rsync
comando, permite múltiples fuentes, por lo que el código que escribió estaría mejor escrito como:
rsync -a * example.com:somewhere/