协慌网

登录 贡献 社区

在 Bash 脚本中管道往返剪贴板

是否可以在 Bash 中管道进出剪贴板?

无论是与设备手柄之间的管道连接还是使用辅助应用程序,我找不到任何东西。

例如,如果/dev/clip是链接到剪贴板的设备,我们可以这样做:

cat /dev/clip        # Dump the contents of the clipboard
cat foo > /dev/clip  # Dump the contents of "foo" into the clipboard

答案

你有点暧昧。我希望你可能是 X 内部的 Linux 用户想要把东西放在 X PRIMARY剪贴板中。

重要的是要理解bash没有剪贴板。没有 “剪贴板” 这样的东西,因为bash可以在 Windows,Mac OS X,许多其他操作系统,X 内部,X 外部运行...... 更不用说 X 本身有三个不同的剪贴板。你可以处理很多剪贴板。通常,您要与之交谈的剪贴板具有一个实用程序,可让您与之交谈。

在 X 的情况下,是的,有xclip (和其他)。 xclip -selection c将数据发送到剪贴板,该剪贴板在大多数应用程序中使用 Ctrl-C,Ctrl-V。

如果你想与 Mac OS X 剪贴板交谈,那就是pbcopy

如果您处于 Linux 终端模式(没有 X),那么您可能需要查看gpm

还有GNU screen ,它有一个剪贴板。要把东西放在那里,请查看screen命令 “ readreg ”。

在 Windows / cygwin 下,对于较新版本的 Windows(至少是 Windows 10),请使用/dev/clipboardclip

确保使用别名xclip="xclip -selection c"否则你不能只使用Ctrl + v将其粘贴回另一个地方。

echo test | xclip

Ctrl + v === test

安装

# You can install xclip using `apt-get`
apt-get install xclip

# or `pacman`
pacman -S xclip

# or `dnf`
dnf install xclip

如果您无法访问apt-getpacman ,也无法访问dnf ,则源代码可在sourceforge 上获得

建立

巴什

~/.bash_aliases ,添加:

alias setclip="xclip -selection c"
alias getclip="xclip -selection c -o"

不要忘记使用加载新配置. ~/.bash_aliases或重新启动您的个人资料。

~/.config/fish/config.fish ,添加:

abbr setclip "xclip -selection c"
abbr getclip "xclip -selection c -o"

不要忘记通过重新启动终端来重新启动 fish 实例以应用更改。

用法

您现在可以使用setclipgetclip ,例如:

$ echo foo | setclip
$ getclip
foo