在OSX的终端中,我可以将输出管道传输到pbcopy,然后进入Web浏览器并将其粘贴。我在Linux中使用xcopy进行了尝试,但是当我切换到浏览器时,它只会使用上一次使用浏览器时的内容覆盖剪贴板。在Linux中,什么像pbcopy一样起作用?
在OSX的终端中,我可以将输出管道传输到pbcopy,然后进入Web浏览器并将其粘贴。我在Linux中使用xcopy进行了尝试,但是当我切换到浏览器时,它只会使用上一次使用浏览器时的内容覆盖剪贴板。在Linux中,什么像pbcopy一样起作用?
Answers:
如果您安装了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)。
Ctrl-b, [ -> go to position -> Space -> select texts -> Enter
粘贴由Ctrl-b, ]
/bin/
。特别是如果您在macOS和linux计算机之间共享您的配置文件。
在您的bin文件夹中放入一个名为pbcopy的脚本:
#!/bin/bash
xclip -i -sel c -f |xclip -i -sel p
这会将STDIN放入选择缓冲区和剪贴板:
echo Hello world |pbcopy
cat
需要?在这种情况下,它不会只是将stdin重定向到stdout,从而导致无用的虐待猫还是我错过了什么?
xclip -o
?或者,还有更好的方法?
xclip -sel c -o
编写脚本/bin/pbpaste
。
扩展@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
${a:-${b:-${c:+${d}}}}
和一些 type -P
/ has
变量分配以及/ bin / test执行程序。
此答案是指Windows的Linux子系统。
简短答案:clip.exe
好像是pbcopy
为了将某些东西放在Windows剪贴板上一样。这是魔法。echo "Hello Windows" | clip.exe
在您的bash或Ubuntu bash终端中使用示例,然后在Windows程序中使用“ ctrl-v”。
更多内容:
在上面的评论中,我提到,当在Windows上使用Xming启用此功能时,必须export DISPLAY=:0
在xsel
和xclip
解决方案起作用之前设置DISPLAY变量(在许多情况下为)。令人愤怒的是,此解决方案以一种不可靠,随机的方式工作-从Linux粘贴到Windows时,按ctrl-v
1到10次会导致粘贴剪贴板(一次)(这在我的Windows 10 Surface Book 2上)。不要浪费时间,请使用clip.exe
。
注意:不要忘记.exe
。否则,Ubuntu bash会建议您安装Linux软件包geomview
,这不是您想要的。