linux安装xclip实现终端与剪贴板之间的通道

2023-05-16

概要: ubuntu 20.04 通过安装 xclip 来实现终端与剪贴板之间的数据通道:xclip 类似 dos 中的 clip命令,xclip 可将命令执行的结果保存到剪贴板,还允许将文件的内容直接放入剪贴板 ,使用 xclip -o 命令可查看剪贴板中的内容。

文章目录

    • What's xclip
    • X selection (X11 黏贴板)的说明
      • wayland or X11
      • X11 selection 类别及详细介绍
        • selection
        • cut-buffer
    • xclip 安装 (in ubuntu 20.04)
    • xclip 用法详解
      • 示例:
    • 参考

What’s xclip

xclip github官方仓库

xclip is a command line utility that is designed to run on any system with an X11 implementation. It provides an interface to X selections (“the clipboard”) from the command line. It can read data from standard in or a file and place it in an X selection for pasting into other X applications. xclip can also print an X selection to standard out, which can then be redirected to a file or another program.

xclip 是一个命令行实用程序,设计用于运行在任何有X11实现的系统上。它提供了一个从命令行进行X selection(“剪贴板”)的接口。它可以从标准输入或文件中读取数据,并将其放在X selection中,以便粘贴到其他X应用程序中。xclip还可以将X selection打印到标准输出,然后将其重定向到一个文件或另一个程序

说明:

  1. X11 又称为 X window 或 X 系统。X Window系统 (X11或X)是一种 位图 显示的 视窗系统 。它是在 Unix 和 类Unix 操作系统 ,以及 OpenVMS 上建立图形用户界面 的标准工具包和协议,并可用于几乎所有已有的现代操作系统。
    详细介绍见 百度百科
  2. X终端是做为X客户机在X服务器上运行的专用硬件。该架构广泛用于为了你多人同时使用同一个大型服务器而构造终端。这也符合MIT的计划的初衷。 X终端搜索网络,使用 XDMCP 产生允许其运行客户机的主机列表。 初始主机需要运行 X display manager 。 专用的X终端(硬件)已经不堪常见了,经常使用 个人计算机来完成相同的功能。

X selection (X11 黏贴板)的说明

wayland or X11

检查自己使用的是wayland还是X11,使用这个命令

echo $XDG_SESSION_TYPE

在这里插入图片描述

Wayland是一个简单的“显示服务器”(Display Server),与X Window属于同一级的事物,而不是仅仅作为X Window下X Server的替代(注:X Window下分X Server和X Client)。也就是说,Wayland不仅仅是要完全取代X Window,而且它将颠覆Linux桌面上X Client/X Server的概念,以后将没有所谓的“X Client”了,而是“Wayland Client”。

Wayland 更详细的介绍 参见。

X11 selection 类别及详细介绍

在X11中,有两种黏贴板selections 和 cut-buffer。两者的机制是不同的。

selection

selection中 的内容由提供的应用程序维护,从 selection 取数据的程序要向原引用程序索取数据。当原应用程序退出时,你也要不到这段数据了。selection其实由三部分构成:Primary,Secondary,Clipboard。其中Secondary表现 ill-defined,我们不会再提到它。如果你想要黏贴 Primary 中的数据,按下鼠标的中键,如果你想黏贴Clipboard中的数据,鼠标右键,在弹出框中选择粘贴。

cut-buffer

cut-buffer由cut-buffer0-7 , 8个buffer构成。cut-buffer 中的数据由X-server维护。如果你不知道什么是x-server,…。只有当x-server退出时(如log out),数据才会消失。也就是说cut-buffer中的数据较为持久,但cut-buffer是一种old and outdated的技术。

目前 cut-buffer 机制基本被废弃,以下主要说明 selection 中的 Primary 和 Clipboard 机制。

xclip 安装 (in ubuntu 20.04)

xclip github官方仓库

ubuntu 默认未安装 xclip 命令,可以通过 sudo apt-get install xclip 命令安装。

笔者在 ubuntu 20.04 安装时遇到以下错误:

/usr/bin/mandb: 无法创建索引缓存 /var/cache/man/oldlocal/zh_CN/9796: 没有那个文件或目录

在这里插入图片描述

虽然出现以上安装错误,但实际上 xclip 仍然成功安装了。

xclip -version 查看 xclip 的版本信息:

在这里插入图片描述

可用:xclip -h 查看 xclip 命令的语法 或 查阅 man 手册:man xclip.

在这里插入图片描述

xclip 用法详解

xclip man手册

名称
       xclip - X selections(剪贴板)与命令行之间的接口

语法
       xclip [选项] [文件]...

描述
       从标准输入或从一个或多个文件中读取数据,并使数据作为X selection可用,以便粘贴到X应用程序中。打印当前X selection 到标准输出。

       -i, -in
              将标准输入或文件中的文本读入X selection中(默认)
              这个默认选项一般都省略。

       -o, -out
              将selection中数据打印到标准输出(通常用于建立和文件或程序之间的管道)

       -f, -filter
              当xclip在输出级别设置为silent(默认值)的in模式下被调用时,
			  filter选项将导致xclip打印由标准输入管道输送到标准输出的未经修改的文本

       -r, -rmlastnl
              当所选内容的最后一个字符是换行符时,将其删除。
              不是 selection 中的最后一个字符的换行字符不受影响。如果选择没有以换行符结束,则此选项无效。
              对于将类似于pwd的程序的单行输出复制到剪贴板,再次将其粘贴到命令提示符中,由于换行符 pwdappends,无需立即执行该行,此选项非常有用。

       -l, -loops
              退出之前等待的X selection请求的数量(粘贴到X应用程序中),值为0(默认值)导致xclip等待无限数量的请求,
			  直到另一个应用程序(可能是另一个调用xclip的应用程序)获得selection的所有权

       -t, -target
              使用给定的目标原子指定特定的数据格式。
			  通过-o,可以使用特殊的目标原子名称“TARGETS”来获得用于此选择的有效目标原子列表。
			  有关目标原子的更多信息,请参阅ICCCM第2.6.2节

       -d, -display            
			  X display to use (e.g. "localhost:0"),如果该选项被省略,xclip默认为$DISPLAY中的值。

      -h, -help
             打印 xclip 选项简要说明信息

       -selection
			  指定要使用哪个X selection,使用XA_PRIMARY(默认)的选项是“primary”,
			  使用XA_SECONDARY的选项是“secondary”,(未用)
			  使用XA_CLIPBOARD的选项是“clipboard”
			  “buffer-cut” 已被废弃。
			  常用的主要选项:primary 和 clipboard。

       -version
              显示 xclip 版本信息

       -silent
              fork到后台等待请求,没有信息输出,除非有错误发生 (xclip 默认在后台运行)

       -quiet 在终端上显示信息消息并在前台运行

       -verbose
              打印 xclip 运行时详细信息

       -noutf8
              在遗留模式下操作(例如,非UTF-8)以实现向后兼容性
			  (只有在真正需要时才使用此选项,因为旧的行为已经被打破)
			  xclip 默认是在 utf-8 模式下操作。
	   
环境
       DISPLAY
              X display to use if none is specified with the -display option.

说明:

xclip从标准输入或文件中读取文本,并将其提供给其他X应用程序,以作为X selection 粘贴(通常是通过中间的鼠标按钮)。它从指定的所有文件中读取,如果没有指定文件,则从标准输入中读取。xclip也可以用-o选项打印选择的内容到标准输出。

xclip 被设计为允许更紧密地集成 X 应用程序和命令行程序。默认的操作是在后台静默等待X selection 请求(粘贴),直到另一个X应用程序将数据放入剪贴板,此时xclip会静默退出。
您可以使用-verbose选项来查看xclip是否以及何时实际收到来自其他X应用程序的选择请求。

选项可以缩写,只要它们保持明确。例如,可以使用-d或-disp代替-display。但是,不能使用-v,因为它是不明确的(它可以是-verbose或-version的缩写),因此它将被解释为文件名。

注意,只有 selection 用 -selection选项指定的第一个字符选项比较重要。这意味着“p”、“sec”和“clip”分别与“primary”、“secondary”或“clipboard”具有相同的效果。

示例:

1.把 uptime 程序的运行结果放在X selection。然后在X应用程序中单击中间进行粘贴。

$ uptime

# 把 uptime 程序的运行结果放在X selection
$ uptime | xclip

# 按鼠标中键,将 PRIMARY selection中数据粘贴到终端

# 将 PRIMARY selection中数据输出到终端
$ xclip -o

执行过程:

在这里插入图片描述

说明:

  1. 按鼠标中键,将 PRIMARY selection中数据粘贴到终端时,多输出 1行,提示 “未找到命令”。
    原因是:程序执行结果如果只有单行,在终端打印时,会自动加上换行符,而在终端输出的文本+换行符会自动将文本作为命令执行,因为此命令不存在,故提示此信息。

    解决方案:在 将 uptime 执行结果 复制到 selection 中时,加上 -r 选项,删除文本中最后一个换行符(当最后一个字符为换行符时)即:uptime | xclip -r

修改后的程序执行结果:

在这里插入图片描述

2.在/etc/motd(当天信息)粘贴10次后退出。显示已经处理了多少选择请求(粘贴)

xclip -loops 5 -verbose /etc/motd

以上命令执行后,当在另一个终端按鼠标中键复制一次,这个终端将输出1次请求,请求数加1.当按 ctrl+c可提前退出。

在这里插入图片描述

3.将剪贴板中数据写入 helloworld.c 文件中

xclip -o > helloworld.c

4.将 thread.c 文件读入 selection,并输出到 thread2.c 文件中

xclip thread.c
xclip -o > thread2.c

5.在支持HTML的X应用程序中单击中键,将给定文件的内容粘贴为HTML

xclip -t text/html index.html

6.-selection选项值 primary 和 clipboard 测试

  1. 当用 -selection primary 选项或省略时(默认值),如果你想要黏贴 Primary 中的数据,按下鼠标的中键,可在目标窗口粘贴数据。
  2. 当用 -selection clipboard, 如果你想黏贴Clipboard中的数据,鼠标右键,在弹出框中选择粘贴即可。

Note:

  1. primary 和 clipboard 中的数据在内存中存储在不同的位置,工作机制存在差异。
  2. xclip -o 只能输出 primary selection 中的数据,不能输出 clipboard selection 中的数据。
    如果要输出 clipboard selection 中的数据,需要加 -selection clipboard 选项,即:xclip -o -selection clipboard

程序验证

在这里插入图片描述
在这里插入图片描述

7.将 XA_PRIMARY 数据复制到 XA_CLIPBOARD

xclip -o | xclip -sel clip

在这里插入图片描述

8.在vim的命令模式下,选择一些文本行,然后按shift-:作为一个ex提示,并使用此命令复制选定的文本行到 primary X selection:

!xclip -f

参考

  1. xclip github
  2. X window selection — xclip
  3. X window link1, X window link2, X11(也叫做X Window系统)
  4. Wayland
  5. linux 命令大全: https://ipcmen.com/
  6. ubuntu 安装常用小工具
(本文完)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux安装xclip实现终端与剪贴板之间的通道 的相关文章

  • 6. fastApi文件上传请求处理示例

    需求 xff1a 开发文件上传功能接口 接口路径 files 请求类型 post 响应结果 返回文件的大小 单位bytes 实现方案 使用post类型处理方法 xff0c 指定参数类型为bytes或UploadFile 使用File 方法处
  • 7. fastApi表单数据处理详解与示例

    需求 前端通过表单数据的形式发送用户名与密码到后端 xff0c 后端通过用户信息校验 xff0c 过滤出合法用户 xff0c 并为用户设置cookie 超时时间为24h xff09 接口路径 login 请求类型 post方法发送的文件 响
  • C语言结构体字节对齐规则

    C语言结构体字节对齐规则 基本规则 规则1 xff1a 结构体 xff08 struct xff09 的数据成员 xff0c 第一个数据成员放在offset为0的地方 xff0c 以后每个数据成员存放在offset为该数据成员大小的整数倍的
  • 如何处理C++构造函数中的错误

    用C 43 43 写代码的时候总是避免不了处理错误 xff0c 一般来说有两种方式 xff0c 通过函数的返回值或者抛出异常 C语言的错误处理一律是通过函数的返回值来判断的 xff0c 一般是返回0 NULL 或者 1 表示错误 xff0c
  • 改进后的A星三维路径规划完整算法(matlab语言),包括障碍物模型优化

    改进后的A星三维路径规划完整算法 matlab语言 xff0c 包括障碍物模型优化 xff0c 平滑处理 xff0c 启发函数的改进 xff0c 环境地图可以根据自己的实际情况进行改进 xff0c 算法包含了非常详细的代码注释 ID 695
  • 8. fastApi请求错误处理方式与示例

    请求错误处理 某些情况下 xff0c 需要向客户端返回错误提示 需要向客户端返回错误提示的场景主要如下 xff1a 客户端没有执行操作的权限客户端没有访问资源的权限客户端要访问的项目不存在服务器内部错误 遇到这些情况时 xff0c 通常要返
  • 9. fastApi的json编码器使用示例

    JSON 编码器 有时 xff0c 我们要把 Pydantic 模型等数据类型转换为字典 列表等与 JSON 兼容的格式 例如 xff0c 把 Pydantic 模型存入数据库时就要进行转换 为此 xff0c FastAPI 提供了 jso
  • 10. fastApi数据更新方法

    用 PUT 更新数据 把输入数据转换为 JSON 数据 xff08 例如 xff0c 使用 NoSQL 数据库时 xff09 xff0c 可以使用 jsonable encoder 例如 xff0c 把 datetime 转换为 str P
  • 写在前面--(与各位读者聊聊)

    xff61 xff65 xff65 xff89 xff9e 嗨 xff01 我是jesse xff0c 欢迎来到我的Python爬虫博客专栏 xff01 在本专栏中 xff0c 我将分享Python爬虫技术的各个方面 xff0c 包括基础知
  • 爬虫示例一【简单爬虫实现】

    爬虫构建 回顾以上的接口分析过程 xff0c 整个对我们有用的请求过程是 xff0c 浏览器发送一个GET请求 xff0c 直接获取到了我们想要的数据页面 那么如何通过python代码复现以上的请求过程呢 xff1f 对于这样的简单爬虫 x
  • 第一节 请求与响应

    请求 由客户端发往服务器 xff0c 分为四个部分 xff1a 请求头 xff0c 请求方法 xff0c 请求网址URL 请求体 当我们在浏览器中输入一个网址或点击一个链接时 xff0c 浏览器会向服务器发送请求 xff0c 请求获取指定的
  • 第二节 Web网页基础

    网页的组成 网页需要通过 HTML CSS JavaScript 和各种媒体资源的组合 xff0c 实现多种功能和呈现效果的页面 一个网页通常由以下几个组成部分构成 xff1a HTML标记语言 xff1a 定义网页的结构 内容和格式 xf
  • 第三节 爬虫基本原理

    爬虫概述 爬虫是指通过程序自动化地获取互联网上的信息 xff0c 从而达到快速 大量地获取数据的目的 Python语言有着丰富的爬虫库和框架 xff0c 因此成为了编写爬虫程序的主流语言之一 Python写爬虫的优势 xff1a 语法简洁
  • 第四节 Session和Cookie

    静态页面和动态页面 静态页面是指服务器上存储的固定页面 xff0c 每次用户访问时返回的内容都是一样的 xff0c 内容不会根据用户的操作或者其他因素发生改变 静态页面通常由 HTML CSS 和 JavaScript 等静态文件组成 xf
  • 案例四 ajax动态加载页面数据爬虫

    需求 xff1a 爬取https spa3 scrape center 电影名称 xff0c 电影分类 xff0c 上映时间和评分 接口分析 直接在浏览器请求https spa3 scrape center xff0c 并查询网页源码 xf
  • python数据持久化总结

    数据持久化 数据持久化通常指将数据保存到磁盘或其他永久存储介质中以便以后使用 以下是一些在Python中进行数据持久化的常用方法 xff1a 文件操作 xff1a 可以使用Python内置的文件操作来将数据保存到文本文件中 xff0c 例如
  • MongoDB查询综合

    数据库操作 选择数据库 use lt 数据库名 gt 展示当前所在数据库 db 在选择数据库后 xff0c 可以进行该数据库的相关操作 xff0c 例如创建集合 插入文档等 查询语法 查询全部文档 db lt 集合名 gt find 指定条
  • c++如何编译

    include lt iostream gt 预处理指令 xff0c include是找一个文件 xff0c 一般引出头文件 int main main函数不用从主函数返回任何数据 std cout lt lt 34 Hello World
  • 在DAX进行字符串大小比较

    昨天看到一个人在论坛上上求助 xff0c 想找一个方法按照一定要求对数据进行分类 分类要求是查找原始数据中的BU Type隶属于分类依据中的哪个区间 xff0c 然后输出该区间对应的Identifier值 其中AA ZZ区间指的是所有两位字
  • Modbus协议的数据模型和地址模型,Modbus寄存器40001,30001是什么意思?

    在使用Modbus协议的时候 xff0c 经常会遇到诸如40001 30001 xff0c 10001之类的地址 xff0c 这些数字代表什么含义呢 xff1f 这其实是Modbus协议的数据模型和地址模型 Modbus协议的数据模型 数据

随机推荐