我想配置一个全局热键来拍摄新的屏幕截图并将其保存在我的主文件夹中的某个位置。我可以使用 ImageMagick 使用以下命令截取屏幕截图:
import screenshot.jpg
但是,如果我多次执行此操作,screenshot.jpg 将被多次覆盖。我希望应用程序自动写入 screen1.jpg、screenshot2.jpg 等。在这种情况下我的命令会是什么样子?
答案1
将文件命名为
import screenshot-`date +%H%M%S`.jpg
答案2
图形用户界面方法
您还可以使用诸如快门去做这个。它提供了对选择、窗口或整个桌面进行屏幕截图的功能。这些操作可以自定义为 Shutter 中的特定键盘快捷键。
显示键盘映射的对话框
显示命名模式的对话框
命令行方法
如果你使用命令import
这是ImageMagick 工具集。
例子
您只需运行下面的命令,然后在准备好截屏时单击鼠标左键即可。
$ import "screenshot-$(date +"%d %b %T").jpg"
生成此文件:
$ ls -l | grep screenshot
-rw-rw-r-- 1 saml saml 2273538 Sep 26 13:06 screenshot-26 Sep 13:06:55.jpg
使用这种形式的命令,您必须引用任何参数,import
以便文件名不会因空格而被分割。
$ import "...file with spaces..."
您还可以使用此命令来截取当前活动窗口的屏幕截图:
$ import -window \
"$(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW): window" | cut -d" " -f5)" \
"screenshot-$(date +"%d %b %T").jpg"
在上面的示例中,该xprop
命令将以编程方式确定活动窗口的 ID:
$ xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW): window" | cut -d" " -f5
0x2e00004
你可以在这里做更多复杂的事情,这只是为了吊起你的胃口。
答案3
一个脚本:
#!/bin/bash
n=0
maxn=1000
bn=screenshot%.jpg
while [[ $n -lt $maxn ]]; do
# create temporary filename
tn=${bn/\%/${n}}
# check whether the file already exists
if [[ -f $tn ]]; then
((n++))
else
screenshot_command $tn
break
fi
done
$bn
是文件基本名称,其中百分比字符充当数字的占位符。请注意,如果删除某些文件,它们将被重新创建,因为一旦文件不存在,将使用该名称 - 您可以恢复计数顺序(即从最大值递减)并使用最后一个不存在的文件名。击中已经存在的一个。