macos
シェルスクリプト
シリアル通信

利用可能なUSBシリアルデバイスのパスを取得する

macOSにUSBシリアルを繋ぐとポートやチップの種類によってデバイスファイル名がまちまちですが、大抵cu.usbではじまっているので、高々1個しか接続しない場合は、

ls /dev | grep -e cu.usb | head -n 1 | xargs printf '/dev/%s\n'

とか、

find /dev/cu.usb* | head -n 1

みたいにやると、1つめのUSBシリアルポートのデバイスファイルのパスが得られます。

Linuxでも使えるようにしようと思ったら、grepの引数に-e ttyUSBを追加して、

ls /dev | grep -e cu.usb -e ttyUSB | head -n 1 | xargs printf '/dev/%s\n'

こんな感じでいけると思います。

シリアルから読込するシェルスクリプトの冒頭で使えるイディオムとしては以下のようになります。
環境変数SERIALになにか指定されていればその値を、指定されていなければシリアルデバイスを探しにいき、それでも見つからなければシェルスクリプトを終了します。

#!/bin/sh

if [ -z "${SERIAL}" ]; then
  export SERIAL=`ls /dev | grep -e cu.usb -e ttyUSB | head -n 1 | xargs printf '/dev/%s\n'`
fi

if [ -z "${SERIAL}" ]; then
  echo "No serial port found" 1>&2
  exit 1
fi

echo "Read from ${SERIAL}" 1>&2

stty -f ${SERIAL} raw 9600
cat ${SERIAL}

FreeBSDでもそのうち試す。