我如何才能管道输出的命令到我的剪贴板,并粘贴回来时,使用终端?例如:

cat file | clipboard

当前回答

在安装了xclip的Linux下:

Xclip -选择剪贴板<文件

其他回答

我使用Parcellite和xsel复制上次提交消息从git到我的剪贴板管理器(由于某种原因xclip不工作):

$ git log -1 --pretty=%B | xsel -i -b

2021的答案

如果你正在寻找一个问题的答案,“我如何将一个命令的输出复制到我的剪贴板中以用于我的下一个命令?”,那么这个解决方案对于Mac用户来说非常有用。

在我的示例中,我只想简单地复制postgres的$的输出,这样我就可以简单地将它粘贴到下一个命令中。

我通过管道我的第一个命令$ postgres $ pbcopy解决了这个问题。

which postgres | pbcopy

然后我可以简单地命令+ V,得到我想要的结果:

/usr/local/bin/postgres

在Wayland上的xcopy似乎不工作,使用wl-clipboard代替。 比如戴着软呢帽

sudo dnf install wl-clipboard

tree | wl-copy

wl-paste > file

使用.bashrc脚本的本机解决方案

Linux, macOS, Windows (WSL/CYGWIN)

这些系统都使用自己的工具将剪贴板功能合并到命令行界面(CLI)中。这意味着,当使用例如在Windows子系统for Linux (WSL)上的Ubuntu命令行时,通常的xclip解决方案将不起作用。这同样适用于macOS。

下表概述了在不同系统上需要的复制/粘贴工具:

OS Copy Paste
WSL clip.exe powershell.exe Get-Clipboard
CYGWIN > /dev/clipboard cat /dev/clipboard
macOS pbcopy pbpaste
Linux xclip -sel clip xclip -sel clip -o

统一的。bashrc解决方案

只需将以下代码放入~/。允许在所有系统上使用复制和粘贴。该解决方案适用于“正常”Linux系统(即Ubuntu, Debian)以及WSL和macOS:

if grep -q -i microsoft /proc/version; then
  # on WSL: version contains the string "microsoft"
  alias copy="clip.exe"
  alias paste="powershell.exe Get-Clipboard"
elif grep -q -i cygwin $(uname -a); then
  # on CYGWIN: uname contains the string "cygwin"
  alias copy="/dev/clipboard"
  alias paste="cat /dev/clipboard"
elif [[ ! -r /proc/version ]]; then
  # on MAC: version is not readable at all
  alias copy="pbcopy"
  alias paste="pbpaste"
else
  # on "normal" linux
  alias copy="xclip -sel clip"
  alias paste="xclip -sel clip -o"
fi

在所有系统上使用

复制:

# pipe
echo "hello world" | copy

# or for direct file input
copy < file

粘贴:

paste > file

我在这里创建了一个工具

取决于xclip包