如何将命令的输出直接复制到我的剪贴板?

如何将命令的输出传输到我的剪贴板并在使用terminal时将其粘贴回来? 例如:

cat file | clipboard 

我一直想要做到这一点,find了一个很好的,简单的方法。 我写下完整的程序,以防其他人需要它。

首先安装一个名为xclip的16 kB程序:

 sudo apt-get install xclip 

然后,您可以将输出xclipxclip以复制到剪贴板中:

 cat file | xclip 

要粘贴刚刚复制的文本,您应该使用:

 xclip -o 

为了简化生活,您可以像我一样在.bashrc文件中设置一个别名:

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

要看看这是多么有用,想象一下,我想在一个新的terminal窗口中打开我当前的path(在某些系统上可能有其他的方式来做Ctrl + T ,但这仅仅是为了说明):

 Terminal 1: pwd | c Terminal 2: cd `v` 

注意` `围绕v 。 这将首先执行v作为命令,然后将其replace为cd来使用。

只将内容复制到X剪贴板

 cat file | xclip 

如果你想粘贴到X应用程序以外的地方,试试这个:

 cat file | xclip -selection clipboard 

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

我写了这个小脚本,用来从复制/粘贴命令中进行猜测。

脚本的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版本依赖于所有Mac上预装的pbcopy和pbpaste。

 #!/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 

使用脚本非常简单,因为您只需将这两个示例中显示的内容input或输出clipboard

 $ cat file | clipboard $ clipboard | less 

把它添加到你的~/.bashrc

 # Now `cclip' copies and `clipp' pastes' alias cclip='xclip -selection clipboard' alias clipp='xclip -selection clipboard -o' 

现在剪辑p贴和c剪辑副本 – 但你也可以做更有趣的东西:

 clipp | sed 's/^/ /' | cclip 

↑缩进您的剪贴板; 适用于没有堆栈溢出的网站{}button

你可以通过运行这个来添加它:

 printf "\nalias clipp=\'xclip -selection c -o\'\n" >> ~/.bashrc printf "\nalias cclip=\'xclip -selection c -i\'\n" >> ~/.bashrc 

我为Linux / OSX / Cygwin创build了一个类似于其他一些工具的工具,但有一点独特。 我把它叫做cb , 它可以在这个github的要点中find 。

在这个要点中,我演示了如何使用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预览,所以我在这里使用了答案框,并将其复制/粘贴到我的要点之后,“我不妨提交答案”。

CB

一个防漏的三通对剪贴板

这个脚本仿照了tee (参见man tee )。

这就像你正常的复制和粘贴命令,但统一,并能够感知你想要什么时候可以链接

例子

复制

 $ 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 

通过文件redirect进行复制

(按时间顺序在最后演示这个是有道理的)

 # 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 

我使用xselxselgit复制上次提交信息到我的剪贴板pipe理器(出于某种原因xclip不起作用):

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

我做了一个提供类似function的小工具,而不使用xclip或xsel。 stdout复制到剪贴板,可以再次粘贴到terminal。 看到:

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

请注意,该工具不需要X会话。 剪贴板只能在terminal内使用,不能通过Ctrl + V或鼠标中键单击进入其他X-Windows。

在安装了xclip的Linux中:

xclip -selection剪贴板<文件

不使用外部工具,如果你连接到服务器视图SSH,这是一个相对简单的命令:

从Windows 7 +命令提示符处:

 ssh user@server cat /etc/passwd | clip 

这将把远程文件的内容放到本地剪贴板上。

(该命令需要运行Pageant作为密钥,否则会要求您input密码。)