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

cat file | clipboard

当前回答

在OS X上,使用pbcopy;Pbpaste的方向相反。

pbcopy < .ssh/id_rsa.pub

其他回答

一种方法是:

安装xclip,例如: Sudo apt-get安装xclip 管道输出到xclip复制到剪贴板: Cat文件| xclip 将刚才复制的文本粘贴到X应用程序中: xclip - o

要粘贴除X应用程序之外的其他地方,例如浏览器窗口中网页的文本区域,请使用:

cat file | xclip -selection clipboard

考虑创建一个别名:

alias "c=xclip"
alias "v=xclip -o"

为了了解这有多有用,假设我想在一个新的终端窗口中打开我的当前路径(在某些系统中可能有其他的方法,如Ctrl+T,但这只是为了说明目的):

Terminal 1:
pwd | c

Terminal 2:
cd `v`

注意v周围的' ',这首先将v作为命令执行,然后将其替换为cd使用。

只复制内容到X剪贴板

cat file | xclip

在OS X上,使用pbcopy;Pbpaste的方向相反。

pbcopy < .ssh/id_rsa.pub

我在这里创建了一个工具

取决于xclip包

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

该脚本的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

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

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