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

cat file | clipboard

当前回答

我为Linux/OSX/Cygwin创建了一个工具,它与其他工具类似,但略有独特之处。我叫它cb,它可以在这个github gist中找到。

在这个要点上,我演示了如何使用Linux、macOS和Cygwin通过命令行进行复制和粘贴。

Linux

_copy(){
    cat | xclip -selection clipboard
}

_paste(){
    xclip -selection clipboard -o
}

操作系统

_copy(){
    cat | pbcopy
}

_paste(){
    pbpaste
}

Cygwin

_copy(){
    cat > /dev/clipboard
}

_paste(){
    cat /dev/clipboard
}

注:我最初只是打算在我对Bob Enohp的回答的评论中提到这一点。但后来我意识到我应该在我的主旨上加上一个自述。由于主旨编辑器不提供Markdown预览,我在这里使用了答案框,在复制/粘贴到我的主旨后,“我不妨提交答案。”如果你想讨论功能/bug,最好在github上的要点评论中这样做。

cb

剪贴板上的防漏t恤

这个脚本是模仿tee(参见man tee)的。

它就像普通的复制和粘贴命令一样,但是统一,并且能够感知你什么时候想要它是可链接的

例子

Copy

$ date | cb
# clipboard contains: Tue Jan 24 23:00:00 EST 2017

粘贴

# clipboard retained from the previous block
$ cb
Tue Jan 24 23:00:00 EST 2017
$ cb | cat
Tue Jan 24 23:00:00 EST 2017
$ cb > foo
$ cat foo
Tue Jan 24 23:00:00 EST 2017

链接

$ date | cb | tee updates.log
Tue Jan 24 23:11:11 EST 2017
$ cat updates.log
Tue Jan 24 23:11:11 EST 2017
# clipboard contains: Tue Jan 24 23:11:11 EST 2017

通过文件重定向复制

(在最后按时间顺序演示是有意义的)

# clipboard retained from the previous block
$ cb < foo
$ cb
Tue Jan 24 23:00:00 EST 2017
# note the minutes and seconds changed from 11 back to 00

其他回答

一种方法是:

安装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/xsel的情况下工作,如果您没有sudo访问权限,这个方法非常有用。

你只需要安装vimx,这是VIM +剪贴板支持。你可以在大多数发行版中找到它。

将脚本保存为~/copy_to_clipboard.sh,

#!/bin/sh
if [ -z "$1" ]
  then
  str=" "
else
  str=$1
fi

vimx -u NONE -U NONE -N -c "let @a=\".\"" -c "let @*= \"$str\" " -c " put a " -c "sleep 2" -c " q!"

赋予执行权限:chmod +x ~/copy_to_clipboard 并调用它:

~/copy_to_clipboard.sh STRING

出于某种原因,您需要设置一个虚拟的@a寄存器,并将其粘贴到临时文件上。否则剪贴板寄存器将无法正确设置。 最后丢弃临时Vim文件。

你的剪贴板将被设置,你可以用鼠标中点击粘贴它

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

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

我制作了一个提供类似功能的小工具,但没有使用xclip或xsel。Stdout复制到剪贴板,并可以再次粘贴到终端中。看到的:

https://sourceforge.net/projects/commandlinecopypaste/

注意,这个工具不需要x会话。剪贴板可以在终端内使用,不需要通过Ctrl+V或鼠标中键单击粘贴到其他x窗口中。