命令行截图工具是Linux和macOS系统中常用的一类实用程序,它们允许用户通过命令行界面快速捕获屏幕、窗口或特定区域,并支持多种输出格式和自定义选项,这类工具特别适合自动化脚本、批量处理或需要高效截图的场景,相比图形化界面工具,命令行工具通常更轻量、灵活,且易于集成到工作流中,以下将详细介绍几款主流的命令行截图工具及其使用方法、优缺点对比,以及常见问题的解答。

主流命令行截图工具介绍
-
Scrot(Simple SCReen shOT)
Scrot是Linux系统中经典的命令行截图工具,基于libimlib2库开发,支持全屏、窗口选择、定时截图等功能,并可输出为JPEG、PNG等多种格式,其安装简单,在基于Debian/Ubuntu的系统中可通过sudo apt install scrot命令安装,在Fedora/CentOS系统中则使用sudo dnf install scrot。
基本用法包括:- 全屏截图:
scrot screenshot.png - 延迟3秒截图:
scrot -d 3 delayed.png - 选择区域截图:
scrot -s selected_area.png
Scrot的优势在于轻量且依赖少,但功能相对基础,不支持高级编辑或直接上传至云端。
- 全屏截图:
-
ImageMagick的import命令
ImageMagick是一套功能强大的图像处理工具集,其中的import命令可用于截图,它支持通过X11协议捕获窗口或区域,并能直接对截图进行简单编辑(如添加文字、裁剪),安装方式为sudo apt install imagemagick(Ubuntu)或sudo dnf install imagemagick(Fedora)。
示例用法:- 截取指定窗口:
import -window ID window.png(需先用xwininfo获取窗口ID) - 选择区域并添加边框:
import -frame border.png
ImageMagick的优势在于与图像处理功能无缝集成,适合需要截图后立即编辑的场景,但命令参数相对复杂,初学者上手较慢。
- 截取指定窗口:
-
Flameshot(命令行+图形化混合)
Flameshot是一款现代化的截图工具,既支持图形化界面,也提供命令行接口flameshot,它支持区域选择、标注、模糊敏感信息等功能,并可将截图直接保存或上传,在Ubuntu中可通过sudo apt install flameshot安装。
命令行示例:- 全屏截图并保存:
flameshot full -p ~/Pictures - 交互式区域截图:
flameshot gui
Flameshot的优势在于功能丰富且易于使用,适合需要高级标注功能的用户,但依赖Qt库,体积较Scrot稍大。
- 全屏截图并保存:
-
Screencapture(macOS原生工具)
macOS系统自带screencapture命令,无需额外安装,支持全屏、窗口、区域截图,并可保存为PNG、JPG、PDF等格式。
常用用法:
(图片来源网络,侵删)- 全屏截图:
screencapture screenshot.png - 截取窗口(需点击选择):
screencapture -c -l $(osascript -e 'tell application "System Events" to get window id of first window of process "Finder"') - 延时10秒截图:
screencapture -T 10 delayed.png
macOS原生的优势在于兼容性好且稳定,但功能较为基础,自定义选项较少。
- 全屏截图:
工具对比与选择建议
为了更直观地比较各工具的特点,以下表格总结了关键信息:
| 工具名称 | 支持系统 | 输出格式 | 特色功能 | 安装复杂度 | 适用场景 |
|---|---|---|---|---|---|
| Scrot | Linux | PNG, JPEG等 | 延时截图、区域选择 | 低 | 简单截图、脚本自动化 |
| ImageMagick | Linux, macOS | 多种格式 | 图像编辑、窗口ID捕获 | 中 | 截图后需编辑的场景 |
| Flameshot | Linux, macOS | PNG, JPG等 | 标注、模糊、云端上传 | 中 | 需要高级标注的用户 |
| Screencapture | macOS | PNG, JPG, PDF | 原生支持、延时截图 | 无需安装 | macOS日常使用 |
选择建议:
- 若追求轻量化和快速截图,推荐Scrot;
- 若需要截图后直接编辑,选择ImageMagick;
- 若对标注功能有需求,Flameshot是更好的选择;
- macOS用户可直接使用Screencapture,无需额外安装。
高级技巧与注意事项
-
自动化脚本集成
命令行截图工具常与Shell脚本结合实现自动化,使用Scrot定时截图并保存到指定目录:for i in {1..10}; do scrot "timed_shot_$i.png" -d 1 sleep 5 done此脚本将每隔5秒截图一次,共10张,文件名包含序号。
(图片来源网络,侵删) -
窗口ID获取
使用ImageMagick截取特定窗口时,需先通过xwininfo命令获取窗口ID,步骤如下:- 运行
xwininfo,鼠标点击目标窗口; - 记录返回的
Window id(如0x1a00001); - 执行
import -window 0x1a00001 window.png。
- 运行
-
截图质量与压缩
部分工具支持调整图片质量,Scrot可通过-q参数设置JPEG质量(1-100,默认75):scrot -q 90 high_quality.jpg,ImageMagick则可通过-quality参数调整。 -
依赖与兼容性
Linux工具通常依赖X11或Wayland显示服务器,Wayland环境下可能需额外配置(如Flameshot需启用flameshot的Wayland支持),macOS用户需注意screencapture在部分安全设置下可能需要授权。
相关问答FAQs
Q1: 如何在Linux中通过命令行截图并直接上传至云存储(如阿里云OSS)?
A1: 可结合Scrot和ossutil工具实现,首先安装ossutil(阿里云官方命令行工具),然后编写脚本:
scrot /tmp/upload.png && ossutil cp /tmp/upload.png oss://your-bucket-name/ -f && rm /tmp/upload.png
此命令先截图到临时文件,再上传至OSS并删除临时文件,需提前配置ossutil的访问密钥。
Q2: macOS中如何使用命令行截取包含鼠标光标的屏幕?
A2: macOS原生的screencapture默认不包含鼠标光标,可通过以下方法实现:
- 安装
macshift工具(如通过Homebrew:brew install macshift); - 使用脚本结合
screencapture和screencapture -c(复制到剪贴板),再通过pngpaste粘贴并添加光标图标。
或使用第三方工具如maim(Linux工具,但可通过macPorts安装到macOS),其支持--cursor参数捕获光标。
