If I run a for loop on the command line in sh, and I press control-C, it usually cancels the current running process, so I need to hold ^C until the shell itself catches it and breaks the loop. Is there a way to break current process and the loop immediately?
The easiest way I know would be to suspend the foreground job (
^Z), then kill it using the job id (
[me@host]$ while [ : ]; do less /etc/motd; done # Ctrl-C can't kill this
After a Ctrl+z
+ Stopped less /etc/motd [me@host]$ kill %1 [me@host]$
The number within the brackets (
) at the beginning of the suspension message gives you the job id.
You can also list out ids of suspended jobs using the the