如何将命令的输出直接复制到我的剪贴板?
如何将命令的输出传输到我的剪贴板并在使用terminal时将其粘贴回来? 例如:
cat file | clipboard
我一直想要做到这一点,find了一个很好的,简单的方法。 我写下完整的程序,以防其他人需要它。
首先安装一个名为xclip
的16 kB程序:
sudo apt-get install xclip
然后,您可以将输出xclip
到xclip
以复制到剪贴板中:
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
我使用xsel
和xsel
从git
复制上次提交信息到我的剪贴板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密码。)