Ubuntu下多终端执行命令并指定窗口布局的脚本开发需求
实现Ubuntu多终端指定布局与命令的脚本
在Ubuntu系统中,我们可以通过终端工具(如默认的gnome-terminal)的命令行参数来实现多窗口的布局控制与命令自动执行,以下是具体实现方案:
核心思路
利用终端的--geometry参数指定窗口的大小与位置,格式为宽x高+左侧偏移+顶部偏移(单位为终端字符的行列数),同时通过--command参数指定终端启动后自动执行的命令。
基础示例脚本
#!/bin/bash # 左侧终端:执行dmesg实时输出,窗口占屏幕左半侧、全屏高度 gnome-terminal --geometry=80x40+0+0 --command="bash -c 'dmesg -w; exec bash'" & # 右侧上方终端:执行top命令,窗口占右半侧上半部分 gnome-terminal --geometry=80x20+80+0 --command="bash -c 'top; exec bash'" & # 右侧下方终端:执行htop命令,窗口占右半侧下半部分 gnome-terminal --geometry=80x20+80+20 --command="bash -c 'htop; exec bash'" &
参数说明
--geometry=WxH+X+Y:W为终端列数,H为行数,X是窗口距离屏幕左侧的偏移,Y是距离顶部的偏移bash -c "命令; exec bash":确保命令执行完毕后终端不会自动关闭,保持窗口存活
自适应屏幕的进阶脚本
如果需要适配不同分辨率的屏幕,可以通过xrandr获取屏幕尺寸,自动计算终端窗口的大小:
#!/bin/bash # 获取当前屏幕分辨率(像素) SCREEN_INFO=$(xrandr | grep '*' | awk '{print $1}') SCREEN_WIDTH=$(echo $SCREEN_INFO | cut -d'x' -f1) SCREEN_HEIGHT=$(echo $SCREEN_INFO | cut -d'x' -f2) # 转换为终端行列数(默认字符尺寸:8px宽 × 16px高) TERM_COLS=$((SCREEN_WIDTH / 8)) TERM_ROWS=$((SCREEN_HEIGHT / 16)) # 左侧dmesg终端:占屏幕宽度的一半、全屏高度 LEFT_COLS=$((TERM_COLS / 2)) gnome-terminal --geometry=${LEFT_COLS}x${TERM_ROWS}+0+0 --command="bash -c 'dmesg -w; exec bash'" & # 右侧终端:分为上下两个,各占一半高度 RIGHT_COLS=$((TERM_COLS - LEFT_COLS)) RIGHT_ROWS=$((TERM_ROWS / 2)) # 右侧上方执行top gnome-terminal --geometry=${RIGHT_COLS}x${RIGHT_ROWS}+${LEFT_COLS}+0 --command="bash -c 'top; exec bash'" & # 右侧下方执行htop gnome-terminal --geometry=${RIGHT_COLS}x${RIGHT_ROWS}+${LEFT_COLS}+${RIGHT_ROWS} --command="bash -c 'htop; exec bash'" &
使用说明
- 将上述代码保存为
multi_terminal.sh - 赋予脚本执行权限:
chmod +x multi_terminal.sh - 运行脚本:
./multi_terminal.sh
注:如果使用的是其他终端(如Konsole),参数逻辑类似,Konsole使用
--geometry指定布局,--execute指定执行命令。
内容的提问来源于stack exchange,提问作者user1296153
相关产品推荐
相关产品推荐

