Reading Arduino serial output on FreeBSD

I'm having issues reading the serial output from my Arduino connected to a FreeBSD-based machine. I have a bash script that echo's a command to the Arduino serial device and listens for a response:

echo command > /dev/cuaU0 && cat /dev/cuaU0

The response gets printed to the terminal, but cat doesn't properly terminate until I send a ^C, so the script hangs. I've tried adding a char(3) to the end of the Arduino's response, running the echo and cat commands on two lines, and redirecting cat's output to a file, but I get the same result. I've also tried using the stty raw commands but I don't get any output.

I set my tty settings for /dev/cuaU0 per the instructions here: Arduino Playground - LinuxTTY

Any help would be greatly appreciated!

EDIT: I did manage to get it to work by leveraging the timeout command:

echo command > /dev/cuaU0 && echo "$(timeout 0.1 cat /dev/cuaU0)"

If anyone has a more graceful way of accomplishing this, I would love to hear it.

I have been using picocom on Linux, and I see it listed on freshports. Let me know if it works. I have not booted FreeBSD in over twenty years, but I see some of the toolchain packages (avrdude, avr-libc...), do they work?

https://www.freshports.org/comms/picocom/

Is it a solution to send a C from the Arduino?

Serial.write(0x03);  // send ^C