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

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

说我想列出文件夹的内容并将其直接粘贴到聊天窗口中给朋友看。

我意识到我可以ls > filename.txt创建一个filename.txt包含这些内容的文件();然后我必须打开或打印该文件并手动选择并复制文本块这可能会令人烦恼/乏味ls)我显然也可以直接从终端窗口内选择并复制输出。

将标准输出简单地传输到剪贴板会更快/更容易

什么终端命令允许我做到这一点?

答案1

这可以通过以下方式完成 xsel 或者 xclip 命令行实用程序。由于这两个程序都不是 Ubuntu 默认自带的,因此您需要先通过 Ubuntu 软件或终端安装它们。以下是使用终端安装它们的方法(但请记住,您只需要这两个程序中的一个):

sudo apt install xsel
sudo apt install xclip

笔记:如果你在 Windows Subsystem for Linux (WSL) 中使用 Ubuntu,请参阅此内容Snap Shot 的答案反而。

现在举几个例子。如果你想将输出复制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'

然后保存并关闭。

现在(重新启动终端后),您可以通过管道将标准输出发送到剪贴板copy(或您决定命名的新别名)。

例如:

ls | copy

答案2

如果您尝试使用 Windows Subsystem for Linux (WSL) 中的 Ubuntu 将文本复制到剪贴板,xselxclip除非您使用 X Windows,否则将无法工作,因为剪贴板仅适用于图形。但是,要将终端标准输出通过管道传输到 WSL Ubuntu 中的剪贴板,您可以使用clip.exe。然后,您可以使用标准粘贴命令粘贴到 WSL Ubuntu 终端中,复制的文本也将在 Windows 中可用。例如,

pwd | clip.exe 

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

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

答案3

对于使用 Wayland 的较新 Ubuntu 版本wl-copy就可以了。要安装它,请运行:

sudo apt install wl-clipboard

使用示例:

ls | wl-copy

答案4

在命令行中复制文件的路径,粘贴后不添加任何新行:

realpath filename | xclip -r -selection c

需要进行切换-r以避免粘贴后产生新的线条。

相关内容