私のシステムのシリアルコンソールを使用しているときはいつで$COLUMNS=80
もとで終わります$LINES=24
。
これらの変数は手動で変更できますが、クライアント端末ウィンドウのサイズ変更中にいつでもこれを行うのは少し面倒です。
通常、私はコンソールに接続を使用しますscreen /dev/mytty baudrate
。
$TERM
環境変数を「screen」または「xterm」に変更しても役に立ちません。
getty
通話にvt100の代わりにこれらのいくつかを使用する必要がありますか?
言うまでもなく、SSHを使用して同じシステムに接続すると、これらすべてがうまく機能します。
ベストアンサー1
前の解説者が述べたように、各コマンドの後に呼び出す以外に選択肢はありません。resize
このコマンドがなくxterm
()にパッケージをインストールしたくない場合は、同じタスクを実行する2つのPOSIXシェルスクリプトがあります。 ANSI端末エスケープコードを使用してください。
res() {
old=$(stty -g)
stty raw -echo min 0 time 5
printf '\0337\033[r\033[999;999H\033[6n\0338' > /dev/tty
IFS='[;R' read -r _ rows cols _ < /dev/tty
stty "$old"
# echo "cols:$cols"
# echo "rows:$rows"
stty cols "$cols" rows "$rows"
}
res2() {
old=$(stty -g)
stty raw -echo min 0 time 5
printf '\033[18t' > /dev/tty
IFS=';t' read -r _ rows cols _ < /dev/tty
stty "$old"
# echo "cols:$cols"
# echo "rows:$rows"
stty cols "$cols" rows "$rows"
}
res
提案されたソリューションに基づいてhttps://wiki.archlinux.org/index.php/working_with_the_serial_console#Resizing_a_terminal。仕組みは次のとおりです。res2
xtermの影響を受けますresize.sh
(参照https://github.com/ThomasDickey/xterm-snapshots/blob/master/vttests/resize.sh)。これはxterm
私たちが望む情報を得るために特定のコードを使用します(多くの端末エミュレータで実装されています)。以下を参照してください。http://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Functions-using-CSI-_-ordered-by-the-final-character_s_(「テキスト領域のサイズを文字単位で報告します。」)。
ちなみに、私の.profile
ファイルには次のものがあります
[ $(tty) = /dev/ttyS0 ] && res
。たとえば、デバイスを再起動した後、シリアル回線(管理に使用する回線)を介してログインするたびに端末のサイズを決定します。
次のアイデアもご覧ください。鋸歯状各コマンドの後にサイズ変更を実行するには、コメントにこの行を追加します[ $(tty) = /dev/ttyS0 ] && trap res2 DEBUG
(私が知っている限り、これは常に可能ではないか、常に可能ではないことに注意してくださいbusybox
)。