Thank you for the reply.
By "messed up" I mean that /dev/ttyACM0 seems to be stuck "in use" and re-plugging in the Arduino creates the next com port in line (i.e. /dev/ttyACM1).
Now that you mention it, it seems to make sense that AVRDUDE tries to access the Arduino board, fails, then maybe doesn't terminate and keeps the port open.
I'll try lsof | grep /dev/ttyACM0 and see if that's it. Then I can kill the old process and free up the port.
Great idea. Thanks again!
-- Roger