Linux 屏幕截图和剪贴板命令行工具

前言

版本说明

  • xclip:0.13
  • gnome-screenshot:3.26.0

截图工具

gnome-screenshot 是一款 GNOME 命令行工具,它是一款用来对整个屏幕、一个特定的窗口或者用户所定义一些其他区域进行捕获的工具。该工具提供了几个其他的功能,包括对所捕获的截图的边界进行美化的功能。值得一提的是,gnome-screenshot 不适用于 KDEXfce 等 Linux 桌面环境。

截图工具的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 捕捉整个屏幕
$ gnome-screenshot

# 捕捉当前Shell窗口
$ gnome-screenshot -w

# 捕捉指定区域
$ gnome-screenshot -a

# 延迟捕捉屏幕
$ gnome-screenshot -d 5

# 捕捉当前Shell窗口,并去除窗口的边框
$ gnome-screenshot -w -b
1
2
3
4
5
# 区域截图,并将截图复制到剪贴板
$ gnome-screenshot -acbp

# 区域截图,并将截图输出到指定的文件
$ gnome-screenshot -abpf screenshot.png

截图工具的参数说明

1
2
3
4
5
6
7
8
9
10
11
12
-c, --clipboard              将截图直接发送到剪贴板
-w, --window 截取窗口,而不是整个屏幕
-a, --area 截取屏幕的一个区域,而不是整个屏幕
-b, --include-border 在截图中包含窗口边框
-B, --remove-border 去除屏幕截图的窗口边框
-p, --include-pointer 在截图中包含鼠标指针
-d, --delay=秒 在指定延迟后截图[以秒计]
-e, --border-effect=特效 添加到边框的特效(阴影、边框、老照片或无特效)
-i, --interactive 交互设置选项
-f, --file=文件名 将截图直接保存为该文件
--version 打印版本信息并退出
--display=显示 要使用的 X 显示

xclip 的安装

功能说明

xclip 是一个剪贴板的命令行实用工具,它可以从标准文件或文件中读取数据(文本、图片)并将其放置在剪贴板里,也可以将剪贴板里的数据(文本、图片)输出到标准文件或文件中。xclip 详细的功能说明如下,适用于 Debian/Ubuntu/CentOS/Arch 等主流的 Linux 发行版。

  • Accesses the cut-buffers
  • Prints contents of selection to standard out
  • Waits for selection requests in the background
  • Supports the INCR mechanism for large transfers
  • Reads data piped to standard in or files given as arguments
  • Accesses the XA_PRIMARY, XA_SECONDARY or XA_CLIPBOARD selection
  • Connects to the X display in $DISPLAY, or specified with -display host:0

依赖安装

CentOS/Fedora

1
# yum install -y libXmu libXmu-devel

Debian/Ubuntu

1
# apt-get install -y libx11-dev libxmu-headers libxt-dev libxmu-dev

编译安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 克隆代码
# git clone https://github.com/astrand/xclip.git

# 进入源码目录
# cd xclip

# 预配置
# autoreconf
# ./configure

# 编译
# make

# 安装
# make install
# make install.man

验证安装

1
2
3
4
5
6
7
8
# 查看版本号
$ xclip -version
xclip version 0.13
Copyright (C) 2001-2008 Kim Saunders et al.
Distributed under the terms of the GNU GPL

# 查看命令手册
$ man xclip

xclip 的使用示例

图片的使用示例

  • 将图片复制到剪贴板
1
2
3
4
5
# 第一步:区域截图,将截图输出到指定的文件
$ gnome-screenshot -abpf screenshot.png

# 第二步:将指定的图片复制到剪贴板
$ xclip -selection clipboard -t image/png -i screenshot.png
  • 将剪贴板的图片输出到指定的文件
1
2
3
4
5
# 第一步:区域截图,并将截图复制到剪贴板
$ gnome-screenshot -acbp

# 第二步:将剪贴板的图片输出到指定的文件
$ xclip -selection clipboard -t image/png -o > clipboard.png

完整的使用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
## Copy your uptime into the selection for pasting:
$ uptime | xclip

## Copy your password file for pasting:
$ xclip /etc/passwd

## Save some text you have Edit | Copied in a web browser:
$ xclip -o -sel clip > webpage.txt

## Open a URL selected in an email client
$ mozilla `xclip -o`

## Copy XA_PRIMARY to XA_CLIPBOARD
$ xclip -o | xclip -sel clip

## In command mode in vim, select some lines of text, then press shift-:
## for an ex prompt, and use this command to copy the selected lines of
## text to the primary X selection:
$ !xclip -f

值得一提的是,xclip 自身还提供了 xclip-copyfilexclip-pastefilexclip-cutfile 命令行工具,支持在不同的目录和机器之间拷贝和移动文件,详见:官方文档

VS Code 使用说明

在 Linux 系统下,VS Code 的 MarkDown 粘贴插件,例如 Markdown Paste 底层使用了 xclip,且版本必须大于等于 0.13.0,否则这类插件无法正常将剪贴板里的图片粘贴到 MarkDown 文件里。

参考资料