📜  用于截屏的 Shell 脚本(1)

📅  最后修改于: 2023-12-03 15:27:10.996000             🧑  作者: Mango

用于截屏的 Shell 脚本

Shell 脚本是一种编程语言,它被广泛应用于自动化任务和管理 UNIX 系统。在本文中,我们将介绍如何使用 Shell 脚本来截取屏幕截图。

使用 xwininfo 命令获取窗口信息

xwininfo 命令可以用来获取图形界面下的窗口信息。使用该命令可以获取窗口的 ID、位置、大小等信息。使用以下命令可以获取鼠标的位置:

xwininfo -root -tree | grep xev | tail -n 1 | awk '{print $1}' | cut -d '"' -f 2

该命令获取了最后一次触发鼠标事件的窗口 ID。我们可以使用这个 ID 来获取该窗口在屏幕上的位置和大小:

xwininfo -id $ID

其中,$ID 是我们刚刚获取到的窗口 ID。运行该命令后,我们将得到关于该窗口的详细信息,包括位置和大小。

使用 xwd 命令截取屏幕截图

xwd 命令可以用来获取图形界面上的像素信息。使用该命令可以获取使用者选择的窗口指定区域截图信息。以下命令将会截取指定窗口的屏幕截图,并将截图保存为 XWD 格式:

xwd -id $ID -out screenshot.xwd

我们还可以使用 convert 命令将 XWD 格式的截图转换为其他图片格式,如 PNG、JPEG 等。以下命令将会将 screenshot.xwd 转换为 PNG 格式的截图:

convert screenshot.xwd screenshot.png
完整代码
#!/bin/bash

# 获取最后一次触发鼠标事件的窗口 ID
ID=$(xwininfo -root -tree | grep xev | tail -n 1 | awk '{print $1}' | cut -d '"' -f 2)

# 获取窗口信息
INFO=$(xwininfo -id $ID)

# 获取窗口位置和大小
X=$(echo $INFO | grep -oE 'Absolute upper-left X: [0-9]+' | grep -oE '[0-9]+')
Y=$(echo $INFO | grep -oE 'Absolute upper-left Y: [0-9]+' | grep -oE '[0-9]+')
W=$(echo $INFO | grep -oE 'Width: [0-9]+' | grep -oE '[0-9]+')
H=$(echo $INFO | grep -oE 'Height: [0-9]+' | grep -oE '[0-9]+')

# 截取屏幕截图
xwd -id $ID -out screenshot.xwd

# 将 XWD 格式的截图转换为 PNG 格式
convert screenshot.xwd screenshot.png

# 将截图移动到当前目录
mv screenshot.png .

以上代码可以截取当前鼠标所在窗口的屏幕截图,并将截图保存为 PNG 格式。