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

cat file | clipboard

当前回答

当我需要复制ssh-key时,我通常会执行这个命令:

cat ~/.ssh/id_rsa.pub | pbcopy

Cmd +v或ctrl+v任意位置。

其他回答

我在这里创建了一个工具

取决于xclip包

在安装了xclip的Linux下:

Xclip -选择剪贴板<文件

2021的答案

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

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

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

which postgres | pbcopy

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

/usr/local/bin/postgres

我写了这个小脚本,它把猜测工作从复制/粘贴命令中去掉。

该脚本的Linux版本依赖于系统中已经安装的xclip。这个脚本叫做剪贴板。

#!/bin/bash
# Linux version
# Use this script to pipe in/out of the clipboard
#
# Usage: someapp | clipboard     # Pipe someapp's output into clipboard
#        clipboard | someapp     # Pipe clipboard's content into someapp
#

if command -v xclip 1>/dev/null; then
    if [[ -p /dev/stdin ]] ; then
        # stdin is a pipe
        # stdin -> clipboard
        xclip -i -selection clipboard
    else
        # stdin is not a pipe
        # clipboard -> stdout
        xclip -o -selection clipboard
    fi
else
    echo "Remember to install xclip"
fi

该脚本的OS X版本依赖于pbcopy和pbpaste,它们已预安装在所有mac电脑上。

#!/bin/bash
# OS X version
# Use this script to pipe in/out of the clipboard
#
# Usage: someapp | clipboard     # Pipe someapp's output into clipboard
#        clipboard | someapp     # Pipe clipboard's content into someapp
#

if [[ -p /dev/stdin ]] ; then
    # stdin is a pipe
    # stdin -> clipboard
    pbcopy
else
    # stdin is not a pipe
    # clipboard -> stdout
    pbpaste
fi

使用脚本非常简单,因为您只需像这两个示例中所示的那样通过管道输入或输出剪贴板。

$ cat file | clipboard

$ clipboard | less

基于之前的文章,我最终得到了以下轻量级的别名解决方案,可以添加到.bashrc:

if [ -n "$(type -P xclip)" ]
then
  alias xclip='xclip -selection clipboard'
  alias clipboard='if [ -p /dev/stdin ]; then xclip -in; fi; xclip -out'
fi

例子:

# Copy
$ date | clipboard
Sat Dec 29 14:12:57 PST 2018

# Paste
$ date
Sat Dec 29 14:12:57 PST 2018

# Chain
$ date | clipboard | wc
   1       6      29