ใน DE เราสามารถปรับขนาดเทอร์มินัล (ตัวอย่างเช่น gnome-terminal) เพื่อความสะดวกของเราฉันจะทราบขนาดของเทอร์มินัลในรูปของพิกเซลหรือจำนวนคอลัมน์และแถวได้อย่างไร
ใน DE เราสามารถปรับขนาดเทอร์มินัล (ตัวอย่างเช่น gnome-terminal) เพื่อความสะดวกของเราฉันจะทราบขนาดของเทอร์มินัลในรูปของพิกเซลหรือจำนวนคอลัมน์และแถวได้อย่างไร
คำตอบ:
หากคุณออกคำสั่ง
stty size
มันคืนขนาดของเทอร์มินัลปัจจุบันในแถวและคอลัมน์ ตัวอย่าง:
$ stty size
24 80
คุณสามารถอ่านแถวและคอลัมน์เป็นตัวแปรเช่นนี้ (ขอบคุณความคิดเห็นของ Janis ):
$ read myrows mycols < <(stty size)
การรับขนาดพิกเซลต้องมีความรู้เกี่ยวกับความละเอียดหน้าจอของคุณและฉันไม่คิดว่าstty
จะสามารถเข้าถึงข้อมูลดังกล่าวได้โดยตรง
bash
echo
read
ksh
bash
read myrows mycols < <( stty size )
ในสภาพแวดล้อมเดสก์ท็อปคุณใช้ 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