bashなどのシェルでターミナルのサイズを取得する方法をまとめます
おすすめは tput コマンド
tputコマンドを使うのが無難です
- tput cols でターミナルの横幅
- tput lines でターミナルの高さ
となります.単位はどちらも文字数です
別解1: $COLUMS と $LINES を使う方法
bash限定では $COLUMS と $LINES という環境変数も利用出来ます
ただし,これら変数はインタラクティブシェル限定です.
シェルスクリプト内部で $COLUMSと$LINESを使いたい場合は
shopt -s checkwinsize
を一度実行する必要があります
またスクリプト実行中にターミナルサイズが変わった場合は
シグナル SIGWINCH を受け取るまで,$COLUMSと$LINESの値は更新されません
別解2: stty を使う方法
tput はPOSIX準拠ではないので,利用できない環境があります.
その場合は stty をつかうのが順当でしょう.sttyはPOSIX準拠なのでどこでも使える筈です.
使い方は
read -r rows cols < <(stty size)
echo $rows $cols