シェルスクリプトでターミナルの大きさを調べる方法

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