当前位置: 首页>>技术教程>>正文


‘xclip’与’xsel’

, ,

问题描述

有两个命令行工具(位于两个不同的包中)用于访问X剪贴板:

  • xclip

  • xsel

我很想知道两者之间的区别,并听听在哪种情况下使用哪个推荐。

最佳回答

xclipxsel都可以将文本存储到3 different selections(默认情况下是主要选择)。从经验中我知道,主要选择基本上就是您的high-light,并通过鼠标中键单击释放(对应于在笔记本电脑上同时按下左右触摸板键)。剪贴板是传统的Ctrl V

但是,通过检查两个页面的man页面,我发现xclip在一个方面胜出-从输入文件中读取:

xieerqi:
$ cat testfile.txt                                                             
HELLOWORLD

xieerqi:
$ xclip -selection clipboard testfile.txt

xieerqi:
$ HELLOWORLD
mksh: HELLOWORLD: not found

xieerqi:
$ xsel testfile.txt 
Usage: xsel [options]
Manipulate the X sele . . . (usage page goes on)

当然,您可以对xsel使用shell重定向来解决该问题

xieerqi:
$ xsel --clipboard < testfile.txt                                              

xieerqi:
$ HELLOWORLD
mksh: HELLOWORLD: not found

xclip还可以将剪贴板的内容输出到文件中(这在您要重定向PRIMARY选择(即突出显示)时可能很有用)也很成功。 xsel仅向stdout提供输出

次佳回答

除了@Serg answer之外,还有来自Tmux page in the Arch Wiki的一些信息在某些特定情况下很有用:

unlike xsel it [xclip] works better on printing raw bitstream that doesn’t fit the current locale. Nevertheless, it is neater to use xsel instead of xclip, because xclip does not close STDOUT after it has read from tmux’s buffer. As such, tmux doesn’t know that the copy task has completed, and continues to wait for xclip’s termination, thereby rendering tmux unresponsive. A workaround is to redirect STDOUT of xclip to /dev/null

第三种回答

还有一点要记住,xsel的依赖关系比xclip的依赖关系少:

# apt-cache depends xsel
xsel
  Depends: libc6
  Depends: libx11-6
  Conflicts: xsel:i386

# apt-cache depends xclip
xclip
  Depends: libc6
  Depends: libx11-6
  Depends: libxmu6
  Conflicts: xclip:i386

第四种回答

使用xclip,因为xsel无法从剪贴板提取二进制数据,例如屏幕截图。例如,将屏幕截图保存到剪贴板:

$ maim -s | xclip -selection clipboard -t image/png

然后保存到文件并比较输出:

$ xclip -o -selection clipboard > 1xclip
$ xsel -o --clipboard > 1xsel
$ ls -go 1*
-rw-rw-r-- 1 11948 Sep 26 20:13 1xclip
-rw-rw-r-- 1     0 Sep 26 20:13 1xsel

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/11774.html,未经允许,请勿转载。