tty0tty
私はPTYを使用してヌルモデムを作成するプログラムを頻繁に使用します。それでは、自動化されたプロセスの一部にしたいと思います。
起動するとtty0tty
印刷されます。
(/dev/pts/1) <=> (/dev/pts/2)
出力を解析し、一致する結果を他のプログラムの引数として使用できますか?このようにして、次の行を自動化できます。
linux$ tty0tty &
(/dev/pts/X) <=> (/dev/pts/Y)
linux$ someprogram /dev/pts/X &
linux$ microcom /dev/pts/Y
答え1
あなたは使用することができsed
ますプロセスの交換:
read left right < <(tty0tty | head -n 1 | sed -e 's/[()<=>]//g' &)
その後は$left
そうです。/dev/pts/X
right
/dev/pts/Y
これは少しトリックです。(
、、、、)
および文字を何も置き換えることなく<
、シェルの単語分離機能に依存します。=
>
tty0tty
出力をパイプで接続して、head
出力の最初の(唯一の)行だけを取得し、永久にブロックしません。そこからsed
置換を実行するコマンドに入り、シェルのread
bultinを使用してシェル変数left
とright
私たちが提供した入力の最初と2番目の単語をバインドします。我々はから対応する入力を取得します<(...)
。サブシェルで<(...)
実行し...
、出力を読み取ることができるパイプに接続します。read
最初の単語をパイプラインにパイプすると、パイプラインはそれをインポート<
して/dev/pts/X /dev/pts/Y
2つの単語に分割します。
その後、必要に応じて実行できますsomeprogram $left
。microcom $right