シリアル (UART等でも) 接続した場合、SIGWINCH が届かないのでウィンドウサイズを変更したときに画面がおかしくなることがある。それを直すための bash
スクリプト。
手動で stty cols ${COL} rows ${ROW}
と叩くのと一緒。xterm
が入っていると reset
コマンドで済むらしいですが。
winch_
#!/bin/bash# カーソル位置を保存echo-ne'\e7'SAVE_STTY=$(stty-g)stty raw -echo min 0
# (x,y)=(999,999) へカーソルを移動、現在位置を表示するecho-ne'\e[999;999H\e[6n'IFS=';'read-rd R -a POSITION
stty${SAVE_STTY}# 出力をパースROW=${POSITION[0]:2}COL=${POSITION[1]}# カーソル位置を復旧echo-ne'\e8'# 端末を設定して表示するstty cols ${COL} rows ${ROW}stty size
エスケープシーケンスを出力してる echo 文 3つは一度に出力しても変わりません。
read をなんとかしたら sh で動きそうなんだけどなぁ。
putty で UART 接続すると速度を手打ちしないといけないので、カンニング用に。
110, 300, 600, 1200, 2400, 9600,
14400, 19200, 38400,
57600, 115200, 230400,
460800, 921600stty 1200
で速度を設定、stty speed
で現在の速度を表示。
参照:
Arch Linux/シリアルコンソール
おまけ:ウィンドウタイトルを変更するにはprintf "\033P\033]0;`uname -n`:`tty`\007\033\\"
こんな感じ。