如何将终端标准输出(stdout)传送到剪贴板?


106

例如,

假设我要列出文件夹的内容,然后将其直接粘贴到聊天窗口中,以供朋友查看。

我意识到我可以ls > filename.txt用这些内容创建一个文件(filename.txt)。然后,我不得不打开或打印文件,然后手动选择并复制文本块这可能很烦人/繁琐。)显然,我也可以ls直接从终端窗口中选择并复制输出。

只需将标准输出通过管道传输到剪贴板,将会更快/更容易

什么终端命令允许我执行此操作?


Answers:


122

可以使用xselxclip 命令行实用程序完成此操作 。由于默认情况下,这两个程序都不随Ubuntu一起提供,因此您首先需要通过Ubuntu软件或终端进行安装。这是终端机中的操作方法(但请记住,您只需要这两个之一即可。)

sudo apt install xsel
sudo apt install xclip

现在举一些例子。如果要将输出复制ls到剪贴板,请执行以下操作:

使用xsel:

ls | xsel -ib

使用xclip:

ls | xclip -sel clip

当然,这也可以用于其他终端命令。假设您要将网络信息粘贴到帮助论坛中。

使用xsel:

sudo lshw -C network | xsel -ib

使用xclip:

sudo lshw -C network | xclip -sel clip

使用新的bash别名使此操作变得更加轻松!

编辑~/.bash_aliases文件(如果尚不存在,请先使用创建文件touch ~/.bash_aliases

然后添加以下一项(取决于您决定使用哪个程序):

alias copy='xclip -sel clip'

要么

alias copy='xsel -ib'

然后保存并关闭。

现在(重启终端之后),您只需将标准输出通过管道传递到“副本”(或您决定命名新别名的任何方式)即可发送到剪贴板

例如:

ls | copy

1
对于较新的Ubuntu版本,应使用apt。所以sudo apt install xsel还是sudo apt install xclip
wisbucky

1
感谢您的回答,但是您仅对Linux终端了解什么吗?
穆罕默德

1
@jpaugh。比较16.0414.04的Ubuntu软件包管理文档。在16.04版中,它仅提及apt而不是apt-get。您仍然可以使用apt-get,但是他们试图鼓励人们使用apt
wisbucky

2
您不必重新启动终端。您可以source ~/.bash_aliases
Rob K

1
@Mohamad这些用于在X服务器内部运行(因为它提供剪贴板功能)。如果没有,则需要在终端仿真器中执行此操作。如何执行此操作取决于您使用的实际软件,因为没有实际的标准。
托尔比约恩Ravn的安德森

2

如果您试图在Linux子系统(WSL)的Windows子系统中使用Ubuntu复制到剪贴板,则xsel或xclip将不起作用,除非您使用X Windows,因为剪贴板仅用于图形化。但是,要将终端标准输出通过管道传输到WSL Ubuntu中的剪贴板,可以使用clip.exe。然后,您可以使用标准粘贴命令粘贴到WSL Ubuntu终端中,并且复制的文本也将在Windows中可用。例如,

pwd | clip.exe 

将当前工作目录复制到(Windows)剪贴板。

当寻找在WSL中复制/粘贴文本的方法时,此搜索结果显示在顶部,所以我认为值得一提,因此读者不必在Ubuntu中不必要地安装xsel或xclip而是使用clip.exe

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.