Terminal
找出打開終端的大小
在 DE 上,為了方便起見,我們可以調整終端(例如 gnome-terminal)的大小,我怎樣才能知道終端的大小(以像素或列數和行數計)?
如果你發出命令
stty size
它以行和列的形式返回目前終端的大小。例子:
$ stty size 24 80
您可以將行和列讀入這樣的變數中(感謝Janis 的評論):
$ read myrows mycols < <(stty size)
獲取以像素為單位的大小需要了解您的螢幕解析度,我認為無法
stty
直接訪問此類資訊。
在桌面環境中,您使用的是 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
的大小。最後一行,with給出了字元的大小(以及左上角的位置——以像素為單位)。-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