适用于 Linux 的 OSX 的 pbcopy 怎么样?

ton*_*sid 161 linux macos

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

小智 184

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

alias pbcopy='xsel --clipboard --input'
alias pbpaste='xsel --clipboard --output'
Run Code Online (Sandbox Code Playgroud)

或使用 xclip :

alias pbcopy='xclip -selection clipboard'
alias pbpaste='xclip -selection clipboard -o'
Run Code Online (Sandbox Code Playgroud)

现在你可以使用它们:

echo 'go to my clipboard' | pbcopy
Run Code Online (Sandbox Code Playgroud)

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

复印 : 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)。

  • xsel:无法打开显示:(空):设备的 ioctl 不合适 (9认同)

Eri*_*rik 10

在您的 bin 文件夹中放置一个名为 pbcopy 的脚本:

#!/bin/bash
xclip -i -sel c -f |xclip -i -sel p
Run Code Online (Sandbox Code Playgroud)

这会将 STDIN 放在您的选择缓冲区和剪贴板中:

echo Hello world |pbcopy
Run Code Online (Sandbox Code Playgroud)

  • 如果您(像我一样)想知道神秘的“无用猫”在哪里,它已被编辑删除。NTS:如果评论混乱,请查看历史记录^^' (3认同)
  • 你说得对,这似乎是无用的虐待猫:-) (2认同)

小智 7

这个答案指的是 Windows 的 Linux 子系统。

简短的回答:clip.exe就像将pbcopy某些内容放在 Windows 剪贴板上一样使用。这是魔法。例如echo "Hello Windows" | clip.exe,在 bash 或 Ubuntu bash 终端中,然后在 Windows 程序中使用“ctrl-v”。

更多背景:

上面的评论中,我提到,当在 Windows 上使用 Xming 启用此功能时,有必要在解决方案工作之前设置 DISPLAY 变量(export DISPLAY=:0在许多情况下)。令人愤怒的是,这个解决方案以一种不可靠、随机的方式工作——从 Linux 粘贴到 Windows 时,按一到十次会导致剪贴板被粘贴(一次)(这是在我的 Windows 10 Surface Book 2 上)。不要浪费你的时间,使用.xselxclipctrl-vclip.exe

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


Wes*_*ner 5

扩展@Erik 和@xpixelz 的解决方案;这两个脚本应该适用于两个平台:

副本:

#!/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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

  • @Hultner“检查 uname 似乎是解决问题的一种奇怪方法”您还可以优先检查二进制文件,按顺序,通过异常使用``${a:-${b:-${c:+${ d}}}}`` 和一些 ``type -P``/ ``has`` 变量赋值和 /bin/test execs。 (2认同)

Umu*_*acı 5

在 WSL2 中,您有clipcopyclippaste,它相当于pbcopypbpaste