デスクトップ環境では端末のサイズを変更できます(GNOME端末例えば)私たちの便宜のために。
端末のピクセルサイズや列、行数をどのように知ることができますか?
答え1
コマンドを出すと
stty size
現在の端末の行と列のサイズを返します。例:
$ stty size
24 80
このような変数で行と列を読み取ることができます(ありがとうジャニスのコメント):
$ read myrows mycols < <(stty size)
ピクセルサイズを取得するには、画面解像度に関する知識が必要であり、stty
そのような情報に直接アクセスする方法はないと思います。
答え2
tput cols; tput lines
これにより、列と行が表示されます。
答え3
中デスクトップ環境、Xを使用しており、xwininfo
ユーティリティはウィンドウサイズをピクセル単位で表示できます。また、デスクトップで実行している場合(リモートで接続されていない場合など)、ターミナルエミュレータは引数$WINDOWID
として使用できる変数を提供しますxwininfo
。
xwininfo -id $WINDOWID
リストを取得します。
xwininfo: Window id: 0xc00025 "uxterm"
Absolute upper-left X: 65
Absolute upper-left Y: 167
Relative upper-left X: 0
Relative upper-left Y: 22
Width: 624
Height: 577
Depth: 24
Visual: 0x22
Visual Class: TrueColor
Border width: 1
Class: InputOutput
Colormap: 0x21 (installed)
Bit Gravity State: NorthWestGravity
Window Gravity State: NorthWestGravity
Backing Store State: NotUseful
Save Under State: no
Map State: IsViewable
Override Redirect State: no
Corners: +65+167 -589+167 -589-256 +65-256
-geometry 103x42+65+145
Width
この例では、行Height
サイズはとです。ピクセル。最後の行は次の-geometry
寸法を提供します。数値(そして左上隅の位置 - ピクセル単位)。
について話すサイズ変更ウィンドウにresize
プログラムは行と列の数を表示します。この例では、次のように表示されます。
$ resize
set noglob;
setenv COLUMNS '103';
setenv LINES '42';
unset noglob;
質問は情報の使用方法を示していませんが、出力は予測可能な形式のテキストなので、スクリプトを書くのは簡単です。以下は、awkを使用する簡単な例です。
#!/bin/sh
if [ -n "$WINDOWID" ]
then
xwininfo -id $WINDOWID | awk '
BEGIN { px = 0; py = 0; chars = "?x?"; }
/Height:/ { py = $2; }
/Width:/ { px = $2; }
/-geometry/ { chars = $2; sub("+.*","",chars); }
END { printf "%dx%d pixels, %s chars\n", py, px, chars; }'
else
printf '? no WINDOWID found\n'
fi
印刷
577x624 pixels, 103x42 chars