macOS自带截图命令ScreenCapture

ScreenCapture简介

ScreenCapture 是 macOS 系统自带的命令行工具,用于截取屏幕截图或录制屏幕视频。它提供了丰富的选项,可以满足多种截图和录屏需求。

help(查看帮助)

在命令行终端执行help指令可以查看 ScreenCapture 提供的所有指令信息

shell 复制代码
$ screencapture --help

翻译后大致功能如下:

diff 复制代码
-a         不包括附加到选定窗口的窗口
-b         捕获触控栏(-i模式下无效)
-c         强制截图保存到剪贴板而不是文件中
-C         截图时保留光标(-i模式下无效)
-d         向用户以图形方式显示错误
-D<display>指定截图的显示器
-i         交互模式截取屏幕。可以是选区或者是窗口。
             control - 截图保存到剪贴板
             space   - 在鼠标选区模式和窗口模式间切换
             escape  - 退出截图
-I         在短信中打开截图
-m         只截取主显示器(-i模式下无效)
-M         截图完毕后,会打开邮件客户端,图片会存在于邮件正文中
-o         在窗口模式下,不截取窗口的阴影
-p         屏幕截图将使用默认设置进行捕获,文件参数将被忽略
-P         截图完毕后,图片在图片预览中打开,视频在QuickTime Player在打开预览
-s         只允许鼠标选取模式
-S         窗口模式下,截取屏幕而不是窗口
-t<format> 指定图片格式,模式是png。可选的有pdf, jpg, tiff等
-T<seconds> 延时截取,默认为5秒。
-w         只允许窗口截取模式
-W         开启交互截取模式(默认为窗口模式),开启后可以进行选取和窗口模式切换
-x         不播放声效
-r         不向图片中加入dpi信息
-l<windowid> 抓取指定windowid的窗口截图
-R<x,y,w,h> 抓取指定区域的截图
-B<bundleid> 截图输出会被bundleid指出的程序打开
-v         录制屏幕的视频
-V<seconds>将视频捕获限制在指定的秒数
-g         在视频录制过程中使用默认输入捕获音频。
-G<id>     在视频录制过程中使用指定的音频ID捕获音频。
-K         在视频录制中显示鼠标点击
-x         不播放声音
-u         在屏幕捕获完成后显示用户界面。通过命令行传递的文件将被忽略。
-U         交互模式下显示工具栏

非交互式截图

全屏截图到文件

ruby 复制代码
# 截全屏到默认路径
$ screencapture output.png

# 截全屏到指定路径
$ screencapture ~/Desktop/output.png

使用screencapture截全屏默认会保存到 /Users/username/ 路径下

全屏截图到剪切板

  • -c:强制截图保存到剪贴板而不是文件中
  • -C:截图时保留光标(只在非交互模式下有效,非交互模式为不需要手动选取操作,如截全屏)
php 复制代码
# 截图保存到剪贴板
$ screencapture -c

# 截图时保留光标
$ screencapture -cC

从截图效果可以看到一个不带光标,一个不带光标

截取特定窗口

如果想在非交互模式下截图指定窗口,可以通过-t参数实现

  • -l:抓取指定windowid的窗口截图

windowid是应用程序窗口的ID,这里以 iTerm 为例,在 osascript 编辑器中运行如下脚本获取所有iTerm的window ID

vbnet 复制代码
tell application "iTerm"
        set winList to every window
        if (count of winList) is 0 then
                return "没有找到窗口"
        else
                set allWindowIDs to {}
                repeat with currentWindow in winList
                        try
                                set winID to id of currentWindow
                                set end of allWindowIDs to winID
                        on error errMsg
                                set end of allWindowIDs to "无法获取ID: " & errMsg
                        end try
                end repeat
                return allWindowIDs
        end if
end tell

获取到window ID后,执行命令

lua 复制代码
$ screencapture -l19647 output.png

截图就只会截取当前应用窗口的内容

截取特定区域

  • -R<x,y,w,h>:抓取指定区域的截图

ScreenCapture可以通过指定一个固定的区域完成截图,格式如下:

diff 复制代码
-R<水平坐标x,垂直坐标y,截图宽度,截图高度>
lua 复制代码
$ screencapture -R100,100,600,400 output.png

设置完成后,我们可以得到如下截图效果

交互式截图

选择区域或窗口

选择区域或窗口截图需要使用-i参数,可以配置 control、space、esc 完成不同的操作

  • -i:交互模式截取屏幕。可以是选取区域或是窗口。
  • control(ctr键):截图保存到剪贴板
  • space(空格键):在鼠标选区模式和窗口模式(鼠标指针变为相机图标)间切换
  • esc(退出键):退出截图

在终端输入如下命令光标会变成【+】选取状态,点击鼠标左键拖拽即可完成截图

css 复制代码
$ screencapture -i output.png

没法截图看效果,这里描述一下:

  • 截图过程中按下【ctr】键,截图会被保存到剪切板;
  • 截图过程按下【space】空格键,可以切换鼠标区域选择和窗口截图模式;
  • 截图过程按下【esc】键会退出截图模式。

仅允许选择区域

只允许选取模式这里需要用到 -s 参数(-s只允许鼠标选择模式),当我们在终端使用-s将无法再次使用【space】空格键切换窗口模式

csharp 复制代码
# 交互式选取区域,无法选择窗口
$ screencapture -is output.png

仅允许选择窗口

只允许选取模式这里需要用到 -w 参数(-w只允许窗口截取模式),当我们在终端使用 -w 将无法再次使用【space】空格键切换区域选取模式

php 复制代码
# 交互式选取窗口或屏幕,二者不会同时包含
$ screencapture -iw output.png

窗口模式下使用 -S 参数(-S窗口模式下,截取屏幕而不是窗口,本人测试可以截图窗口或屏幕,截取屏幕两者可以同时包含,不知道是不是使用的不对)

lua 复制代码
$ screencapture -iwS output.png

指定显示器

如果有多个显示器,可以通过 -D+number 指定截取的显示器,-D1是主显示器,-D2是第二个显示器,以此类推。

php 复制代码
# 截取指定显示器
$ screencapture -D1 output.png

截取主显示器可以通过 -m 参数:

php 复制代码
# 截取主显示器
$ screencapture -m output.png

指定格式和延迟

指定输出格式

有时我们需要其他类型的截图,可以通过 -t 参数进行设置

  • -t:指定图片格式,模式是png,可以指定其他格式,如

jpg、pdf、tiff 等

php 复制代码
# 默认设置指定后缀也可以实现
$ screencapture -tpdf output.pdf

设置延迟

某些场景需要设置延迟截图,可以通过 -T 参数设置

  • -T:延时截取,默认为5秒
lua 复制代码
$ screencapture -T2 output.png

截图预览

在图片预览中预览

使用 -p 截图预览,会在截图后在屏幕右下角展示预览效果,同时将文件保存到桌面

php 复制代码
# 截全屏保存到桌面
$ screencapture -p output.png

# 选取截图保存到桌面
$ screencapture -ip output.png

在邮件中预览

如果想截图后发送邮件可以配置 -M 参数快速将截图通过邮件发送

php 复制代码
# 截取全屏发送邮件
$ screencapture -M output.png

# 选取截屏发送邮件
$ screencapture -iM output.png

在短信中预览

php 复制代码
# 截图在短信中展示
$ screencapture -I output.png

在QuickTime Player中预览

php 复制代码
# 截全屏保存到桌面
$ screencapture -v -P output.mp4

# 选取截图保存到桌面
$ screencapture -vP output.mp4

录制完成后就会使用QuickTime Player打开

录制屏幕

录制全屏视频

录制视频需要使用 -v 参数:

  • -v:录制屏幕的视频
lua 复制代码
$ screencapture -v output.mp4

录制结束使用 ctrl-c 结束录制

限制录制时长

限制视频录制时长可以使用 -V 参数:

  • -V:将视频捕获限制在指定的秒数
php 复制代码
# 录制30s视频
$ screencapture -v -V30 output.mp4
或者
$ screencapture -vV30 output.mp4

录制音频

使用默认音频

屏幕录制 -v 参数录制的视频默认是没有音频的,如需录制音频需要使用 -g 参数:

  • -g:在视频录制过程中使用默认输入捕获音频。
php 复制代码
# 录制带音频的视频
$ screencapture -v -g output.mp4
或者
$ screencapture -vg output.mp4

使用指定音频ID

  • -G:在视频录制过程中使用指定的音频ID捕获音频
shell 复制代码
$ screencapture -v -G<id> output.mp4

其他操作

视频录制中显示鼠标点击

lua 复制代码
$ screencapture -v -k output.mp4

交互模式下显示工具栏

css 复制代码
$ screencapture -U -i output.png

和使用系统的截屏工具效果一致

使用场景

录制60s音视频

lua 复制代码
$ screencapture -v -g -V60 output.mp4
或者
$ screencapture -vgV60 output.mp4

截取主屏幕拷贝到剪切板

php 复制代码
$ screencapture -m -c
或者
$ screencapture -mc

截取窗口不显示阴影

lua 复制代码
$ screencapture -i -o -w output.png
或者
$ screencapture -io -w output.png

友情提示

见原文:macOS自带截图命令ScreenCapture

本文同步自微信公众号 "程序员小溪" ,这里只是同步,想看及时消息请移步我的公众号,不定时更新我的学习经验。

相关推荐
寒水馨19 小时前
macOS下载、安装openclaw-v2026.7.1(附安装包OpenClaw-2026.7.1.dmg)
macos·大模型·github·开源软件·ai助手·openclaw·gpt-5.6
白玉cfc1 天前
【iOS】MRC和ARC
macos·ios·cocoa
飞雪金灵1 天前
mac电脑 Maven下载安装和配置环境变量
macos·maven·maven下载安装·mac电脑环境
雨声不在1 天前
macos 12使用docker
macos·docker·容器
一叶龙洲1 天前
ubuntu26.04 xfce美化成mac
服务器·ubuntu·macos
李小白杂货铺1 天前
Oh My Zsh 简记
macos·macbook·zsh·主题·插件·oh my zsh·omz
fukai77222 天前
macOS防止休眠的菜单栏小工具
macos
web守墓人2 天前
【go语言】gotar:使用go语言复刻tar命令,并加入7z支持,可独立运行在windows、linux、macos上
linux·macos·golang
之歆3 天前
从 Mac 回到 Windows:用 PowerToys + AutoHotkey 找回熟悉手感
windows·macos
星辰即远方3 天前
字符串合法性检验
macos·ios·cocoa