在OSX的终端中,我可以将输出管道传输到pbcopy,然后进入Web浏览器并将其粘贴。我在Linux中使用xcopy进行了尝试,但是当我切换到浏览器时,它只会使用上一次使用浏览器时的内容覆盖剪贴板。什么像Linux中的pbcopy?

评论

...对于那些不知道什么是pbcopy的人,这是手册页developer.apple.com/library/mac/#documentation/Darwin/Reference / ...

ClipIt(和类似的剪贴板管理器)是对此有帮助的工具。它不仅可以在终端中很好地播放,还可以保留剪贴板的历史记录。非常有用。

#1 楼

如果您安装了X,则可以通过以下方式尝试xsel:

alias pbcopy='xsel --clipboard --input'
alias pbpaste='xsel --clipboard --output'


或使用xclip:

alias pbcopy='xclip -selection clipboard'
alias pbpaste='xclip -selection clipboard -o'


现在您可以使用它们了:

echo 'go to my clipboard' | pbcopy


当我没有XI时,可以使用GNU Screen功能在使用键盘的会话中打开的外壳之间进行复制

要复制:Ctrl-a -> Esc -> go to wanted position * -> Space (to begin selecting) -> press k to go forward mark text -> Enter

要粘贴:Ctrl-a + ]

*运动是通过vim进行的,例如键绑定(j,k,l和m)。

评论


谢谢,这正是我想要的信息。现在我想知道是否有办法让Screen允许我使用Emacs命令选择要复制的区域...

–诺亚·萨斯曼(Noah Sussman)
2011-12-31 16:58



xsel:无法打开显示:(空):设备的不适当的ioctl

–itsazzad
15年12月24日在10:16

我通过安装Xming并设置DISPLAY =:0解决了Windows上的“无法打开显示”问题

–斯科特瓦尔德
17年12月25日在4:49

对于tmux用户,它更像是Ctrl-b,[->转到位置->空格->选择文本->通过Ctrl-b输入并粘贴,]

– elquimista
18-10-14在6:13

只要有可能(当然,这是永久性的),与其在配置文件中使用别名来使名称空间复杂化,不如在/ bin /中为此创建一个基本脚本会更好。特别是如果您在macOS和linux计算机之间共享您的配置文件。

–本杰明·R
19年1月17日在17:49



#2 楼

将这样的脚本pbcopy放入bin文件夹中:

#!/bin/bash
xclip -i -sel c -f |xclip -i -sel p


这会将STDIN放入选择缓冲区和剪贴板:

echo Hello world |pbcopy


评论


为什么需要猫?在这种情况下,它不会只是将stdin重定向到stdout,从而导致对猫的滥用吗?还是我错过了什么?

–霍尔特纳
15年5月21日在7:53

没错,这看起来像是对猫的无用虐待:-)

– Erik
15年5月25日在10:44

如果您(像我一样)想知道神秘的“没用的猫”在哪里,那么它已被编辑删除。 NTS:如果注释令人困惑,请查看历史记录^^'

– yaitloutou
17年1月31日在16:40



使用后如何粘贴内容?仅使用xclip -o吗?或者,还有更好的方法?

– n1k31t4
17年5月4日在5:23



@ n1k31t4我所做的是使用xclip -sel c -o在/ bin / pbpaste处创建了等效脚本。

–本杰明·R
19年1月17日在17:53

#3 楼

扩展@Erik和@xpixelz的解决方案;这两个脚本在两种平台上均应适用:

pbcopy:

#!/bin/bash
__IS_MAC=${__IS_MAC:-$(test $(uname -s) == "Darwin" && echo 'true')}
if [ -n "${__IS_MAC}" ]; then
  cat | /usr/bin/pbcopy
else
  # copy to selection buffer AND clipboard
  cat | xclip -i -sel c -f | xclip -i -sel p
fi


pbpaste:

#!/bin/bash
__IS_MAC=${__IS_MAC:-$(test $(uname -s) == "Darwin" && echo 'true')}
if [ -n "${__IS_MAC}" ]; then
  /usr/bin/pbpaste
else
  xclip -selection clipboard -o
fi


评论


但是,为什么还要在本机用户区中的OS X上使用此脚本呢?

–霍尔特纳
2015年5月21日在8:02

*作为类似功能的参考,*跨平台点文件:github.com/westurner/dotfiles/blob/develop/scripts/pbcopy

–韦斯·特纳
15年5月27日在17:41

仍然是猫的虐待,为什么不检查xclip是否存在并分配别名(如果存在)?或检查是否存在pbpaste二进制文件也是一种选择。检查uname似乎是解决该问题的一种奇怪方法。

–霍尔特纳
15年5月29日在15:19

@Hultner“检查uname似乎是解决问题的一种奇怪方法”,您也可以优先检查二进制文件,以例外地使用$ {a:-$ {b:-$ {c:+ $ {d} }}}和某些类型的-P /具有变量分配和/ bin / test execs。

–韦斯·特纳
2015年12月13日在20:16

#4 楼

此答案是指Windows的Linux子系统。

简短的答案:就像使用clip.exe一样使用pbcopy,以便在Windows剪贴板上放置东西。这是魔法。 bash或Ubuntu bash终端中的示例echo "Hello Windows" | clip.exe,然后在Windows程序中为“ ctrl-v”。

更多上下文:

在上面的评论中,我提到,当在Windows上使用Xming启用此功能时,必须设置DISPLAY变量(export DISPLAY=:0,在许多情况下xselxclip解决方案工作之前)。令人发指的是,该解决方案以一种不可靠,随机的方式工作-从Linux粘贴到Windows时,按ctrl-v 1至10次会导致粘贴剪贴板(一次)(这是在Windows 10 Surface Book 2上)。不要浪费时间,请使用clip.exe

注意:不要忘记.exe。否则,Ubuntu bash会建议您安装Linux软件包geomview,这不是您想要的。

#5 楼

在WSL2中,您有clipcopyclippaste等效于pbcopypbpaste