使用 xclip 在 Linux 命令行中复制和粘贴

了解如何开始使用 Linux xclip 实用程序。
191 位读者喜欢这个。
Green paperclips

公共领域的原始图片。Jason Baker 修改。CC BY-SA 4.0。

在 Linux 桌面环境下工作时,您通常如何复制文本文件的全部或部分内容? 很可能您会在文本编辑器中打开文件,选择全部或仅选择要复制的文本,然后将其粘贴到其他位置。

这可以奏效。但是,您可以使用 xclip 实用程序在命令行中更高效地完成这项工作。 xclip 在您在终端窗口中运行的命令与 Linux 图形桌面环境中的剪贴板之间提供了一个通道。

安装 xclip

xclip 不是许多 Linux 发行版的标准套件。要查看您的计算机上是否已安装它,请打开终端窗口并键入 which xclip。 如果该命令返回类似 /usr/bin/xclip 的输出,则表示您已准备就绪。 否则,您需要安装 xclip。

为此,请使用您的发行版的软件包管理器。或者,如果您喜欢冒险,请从 GitHub 获取源代码 并自行编译。

执行基本操作

假设您要将文件的内容复制到剪贴板。使用 xclip 有两种方法可以做到这一点。键入任一命令

xclip file_name

xclip -sel clip file_name

这两个命令之间有什么区别(除了第二个命令更长)? 如果您使用鼠标中间按钮粘贴文本,则第一个命令有效。 但是,并非所有人都会这样做。 许多人习惯使用右键单击菜单或按 Ctrl+V 来粘贴文本。 如果您是这些人之一(我就是!),则使用 -sel clip 选项可确保您可以粘贴想要粘贴的内容。

将 xclip 与其他应用程序结合使用

将文件的内容直接复制到剪贴板是一个很酷的小技巧。 但是,您可能不会经常这样做。 您还可以通过其他方式使用 xclip,这些方式涉及将其与另一个命令行应用程序配对。

这种配对是通过管道 (|) 完成的。 管道将一个命令行应用程序的输出重定向到另一个应用程序。 这样做会带来多种可能性。 让我们看看其中的三个。

假设您是一名系统管理员,并且需要将日志文件的最后 30 行复制到错误报告中。 在文本编辑器中打开文件、向下滚动到末尾以及复制和粘贴有点麻烦。 为什么不使用 xclip 和 tail 实用程序快速轻松地完成这项工作呢? 运行此命令以复制最后 30 行

tail -n 30 logfile.log | xclip -sel clip

我的很多写作都进入了某种内容管理系统 (CMS) 或其他系统,以便在网络上发布。 但是,我从不使用 CMS 的 WYSIWYG 编辑器进行写作——我离线使用 纯文本 格式进行写作,并使用 Markdown 进行格式化。 也就是说,许多此类编辑器都具有 HTML 模式。 通过使用此命令,我可以使用 Pandoc 将 Markdown 格式的文件转换为 HTML,并一举将其复制到剪贴板

pandoc -t html file.md | xclip -sel clip

从那里,我就可以粘贴了。

我的两个网站是使用 GitLab Pages 托管的。 我使用名为 Certbot 的工具为这些站点生成 HTTPS 证书,并且每次续订证书时,都需要将每个站点的证书复制到 GitLab。 将 cat 命令和 xclip 结合使用比使用编辑器更快、更高效。 例如

cat /etc/letsencrypt/live/website/fullchain.pem | xclip -sel clip

使用 xclip 只能做这些吗? 当然不是。 我相信您可以找到更多适合您需求的用途。

最终想法

并非所有人都会使用 xclip。 这没关系。 然而,它确实是那些在您需要时真正派上用场的小实用程序之一。 而且,正如我在少数情况下发现的那样,您不知道何时会需要它。 当那个时候到来时,您会很高兴 xclip 在那里。

标签
That idiot Scott Nesbitt ...
我长期使用免费/开源软件,并为乐趣和利益撰写各种文章。 我并没有把自己看得那么重要,我所有的特技都是自己完成的。

8 条评论

又一个虐待猫科动物的案例。 您不需要 cat,xclip 可以接受文件参数

xclip -sel clip /etc/letsencrypt/live/website/fullchain.pem

如果我不在命令中使用它,我的 cat 副本会感到被冷落了...

感谢您指出复制这些证书的另一种方法!

回复 作者:Nick Fagan (未验证)

如果您有一个想要将信息发送到剪贴板的程序,但又不想费力研究 X 的库,这也非常方便。 只需向 xclip 发出系统调用并将您的数据通过管道传输到它,瞧。

还没有全部看完,但 shift-ctrl 和 x、c 或 v 中的任何一个都可以在我使用过的每个终端模拟器中剪切、复制和粘贴

xterm 或 rxvt-unicode 除外!

我认为本文不一定旨在考虑终端模拟器,而是提供一种执行常用复制/粘贴操作的替代方法。

回复 作者:Edcompsci

说得好! 我总是使用 Ctrl-Shift-V 键,所以在我的 .zshrc(bashers 的 .bashrc)中,我像这样为 xclip 设置别名

alias xclip="xclip -sel clip"

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.