获取当前OS X或iTerm终端窗口的屏幕截图

5
在Linux中,我使用imagemagick import -window $WINDOWID来截取终端的屏幕截图。
在OS X中是否有类似的操作呢?

从技术上讲,WINDOWID 是由您的 X 服务器设置的,并且确实在(例如)在 XQuartz 下运行的 xterm 中可用。至少,答案将取决于您使用的终端仿真器。 - chepner
理想情况下,我希望支持iterm2和默认终端。 - Ilia Choly
脚本试图使用窗口ID做什么?Quartz窗口ID确实存在,但没有简单的方法从终端会话中获取它,即使获取到了,我也怀疑它对你的bash脚本有用。 - Nicholas Riley
@NicholasRiley 我正在使用import -window $WINDOWID命令来使用imagemagick截取终端屏幕。 - Ilia Choly
1
好的,我现在回答你的问题了 :-) - Nicholas Riley
3个回答

8
你应该使用 screencapture 而不是 import,因为后者只适用于 X11 窗口。
如果窗口在前台,你可以尝试:
screencapture -l$(osascript -e 'tell app "Terminal" to id of window 1') test.png

查看这个问题以获取更多背景信息。


3

尝试使用tty命令。

$ tty
/dev/ttys001

您可以通过使用 `ps -t` 命令查看该终端正在运行的命令:

$ ps -t s001  #Where `tty` returns /dev/ttys001

您也可以尝试使用 pgrep
$ pgrep -t s001

编辑(你可以/我可以)

哦,这是为了截屏...不在原始帖子中。

$WINDOWID 是X11的一部分,imagemagick 也是如此。Linux图形界面(包括KDE和Gnome)都基于X11协议。Mac GUI不是这样的。

在Mac OS X上,有一个 screencapture 命令。我没有用过它,但是让我们看看manpage:

screencapture实用程序到目前为止还没有很好的文档记录。

你得自己动手了。

再来一个诀窍...

你可以在Mac上运行X11服务器。服务器不再包含在Mountain Lion中,但是Apple建议您从XQuartz项目安装它。

你可以运行X11服务器,然后使用具有Windows ID的XTerm窗口,这可以与imagemagick一起使用。


第一个终端的名称应该是ttys000,如果只有一个终端选项卡,则通常会返回“没有这样的文件或目录”。 - shawnzhu
1
我打开了第二个选项卡并在那里运行了一个进程,这样我就可以在第一个选项卡中看到它。这就是为什么我有s001而不是s000。我的建议是使用“tty”命令查看您的终端ID,然后您可以使用该ID查找您的进程。我会更新我的答案,使其更加明显。 - David W.
如何在给定tty的情况下识别GUI窗口? - chepner
OP正在询问一个“bash脚本”,它需要知道它正在运行的终端的窗口ID。那是一个tty。知道这一点将有助于BASH脚本识别自己,因为它可以通过tty的名称限制通过pspgrep显示的进程。 - David W.

0

使用快捷键 Command + Control + Shift + 4 + Space 可以截取应用程序窗口的屏幕截图。

请参考此链接:https://support.apple.com/zh-cn/HT201361 了解如何在 macOS 中截取屏幕截图。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接