在Bash中是否可以将内容导入/导出到剪贴板?
无论是将内容导入/导出到设备句柄,还是使用辅助应用程序,我都没有找到任何相关资料。
例如,如果/dev/clip
是指向剪贴板的设备链接,我们可以这样做:
cat /dev/clip # Dump the contents of the clipboard
cat foo > /dev/clip # Dump the contents of "foo" into the clipboard
你可能需要处理各种剪贴板。我猜你可能是一个Linux用户,想将内容放入X Windows的主剪贴板中。通常情况下,你想使用的剪贴板会有一个工具让你可以操作它。
在X环境下,有xclip
等工具。使用xclip -selection c
可以将数据发送到与大多数应用程序中的Ctrl+C, Ctrl+V相对应的剪贴板。
如果你使用的是Mac OS X,则可以使用pbcopy
,例如:cat example.txt | pbcopy
如果你处于Linux终端模式(没有X),那么可以尝试使用gpm
或者带有剪贴板功能的Screen。尝试使用Screen命令readreg
。
在Windows 10+或Cygwin下,可以使用/dev/clipboard
或clip
。
/dev/clipboard
在Msys/MinGW bash shell中也可以使用。 - Mihai Rotarudir | clip
。 - maep确保您正在使用alias xclip="xclip -selection c"
,否则您将无法使用Ctrl+v进行粘贴操作。
例如:
运行echo -n test | xclip
后,Ctrl+v将粘贴test
。
alias pbcopy="xclip -selection c"
alias pbpaste="xclip -selection clipboard -o"
希望这对你有帮助。 - dougxclip
没有添加换行符,是 echo
添加了。请尝试使用 printf test | xclip -i -selection clipboard
命令。(printf
不会添加换行符,除非你写成 'test\n'
)。 - David Xecho -n
替代 printf
。 - Christian Pietsch# You can install xclip using `apt-get`
apt-get install xclip
# or `pacman`
pacman -S xclip
# or `dnf`
dnf install xclip
如果您无法使用apt-get
、pacman
或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"
别忘了重新启动终端以便更改生效。
现在您可以使用 setclip
和 getclip
,例如:
$ echo foo | setclip
$ getclip
foo
pacman
软件包管理器的选项,并删除了 .bashrc
建议。我知道 .bash_aliases
更适合,但最终结果是相同的(如果存在,.bashrc
只需需要 .bash_aliases
)。如果人们想要一个混乱的系统,就让他们拥有一个。 :) - tleb.bashrc
在末尾引用了.bash_aliases
。;) 我遵循这个古老的约定,它在Arch、Ubuntu/Debian、Raspberry变体、macOS/OSX和Windows Bash上保持100%兼容性:http://stefaanlippens.net/my_bashrc_aliases_profile_and_other_stuff/ 有了这个约定,我可以在所有我接触到的机器上使用完全相同的dotfiles。这非常好:https://github.com/eduncan911/dotfiles - eduncan911$PROMPT_COMMAND
(比较时间戳)在更改时轻松重新加载.bash_aliases
。我已经用自动重新加载的.bashrc的方式完成了这个过程。 - jpaughpbcopy < my_clipboard.txt
也可用于从文件中复制内容。 - Praveencat my_clipboard.txt | pbcopy
将文件内容复制到剪贴板,但pbcopy < my_clipboard.txt
更顺畅。 - leifericfcat my_clipboard.txt | pbcopy
来将文件内容复制到剪贴板,但是pbcopy < my_clipboard.txt
更加顺畅。 - undefined使用clipboard-cli。它可以在 macOS、Windows、Linux、OpenBSD、FreeBSD 和 Android 上无任何问题地使用。
安装方法如下:
npm install -g clipboard-cli
然后你可以执行:
echo foo | clipboard
如果你想的话,可以在你的.bashrc
、.bash_profile
或.zshrc
中添加以下内容来将别名设置为cb
:
alias cb=clipboard
npm
包吗? - Johnnyxsel在Debian/Ubuntu/Mint上的使用
# append to clipboard:
cat 'the file with content' | xsel -ab
# or type in the happy face :) and ...
echo 'the happy face :) and content' | xsel -ib
# show clipboard
xsel -ob
# Get more info:
man xsel
安装
sudo apt-get install xsel
echo "foo" | xclip -selection c
有何不同? - Léo Léopold Hertz 준영xsel
和xclip
在所有方面都是等效的,除了xclip
可以通过名称读写文件,而xsel
需要使用shell重定向才能访问文件。 - Colin D Bennettxsel
在脚本中表现良好,而xclip
仅在提示符下工作。不确定原因。 - NVRM在适用于Linux的Windows子系统(WSL)上,您可以使用clip.exe将内容复制到剪贴板:
cat file | clip.exe
记得使用 |
管道命令,而不是 >
命令,因为那样不起作用。
安装xcopy实用程序,当您在终端中时,请输入:
Copy
Thing_you_want_to_copy | xclip -selection c
粘贴
myvariable=$(xclip -selection clipboard -o)
我注意到很多答案推荐使用pbpaste和pbcopy。如果你喜欢这些工具,但是它们在你的软件源中无法使用,你可以为xcopy
命令创建别名并将它们称为pbpaste
和pbcopy
。
alias pbcopy="xclip -selection c"
alias pbpaste="xclip -selection clipboard -o"
那么它看起来就像这样:
Thing_you_want_to_copy | pbcopy
myvariable=$(pbpaste)
我在一个名叫doug的用户的评论中找到了一个对我很有帮助的答案。因为我认为它很有用,所以我决定在回答中重新陈述一遍。
以下是可在多个平台上使用的即用型Bash脚本,用于读取剪贴板。
如果您添加了功能(例如更多平台),请在此处编辑脚本。
#!/bin/bash
# WF 2013-10-04
#
# Multi-platform clipboard read access
#
# Supports
# Mac OS X
# Git shell / Cygwin (Windows)
# Linux (e.g., Ubuntu)
#
# Display an error
#
error() {
echo "error: $1" 1>&2
exit 1
}
#
# getClipboard
#
function getClipboard() {
os=`uname`
case $os in
# Git Bash (Windows)
MINGW32_NT-6.1)
cat /dev/clipboard;;
# Mac OS X
Darwin*)
pbpaste;;
# Linux
Linux*)
# Works only for the X clipboard - a check that X is running might be due
xclip -o;;
*)
error "unsupported os $os";;
esac
}
tmp=/tmp/clipboard$$
getClipboard >$tmp
cat $tmp
# Comment out for debugging
rm $tmp
:%y+
命令来复制所有行到 X 的 PRIMARY 剪贴板中,其中 X 代表的是 '+' 寄存器。如果您想要具体指定某些行,请将%
替换为一个范围。但是,这里有三个注意事项:1. 现在,您必须先将文本保存到文件中才能复制它。这与答案中提到的xclip
命令相反。2. 如果您不熟悉 vim,这可能会很繁琐。3. 只有在编译 vim 时启用了特定功能才能执行此操作。如果您安装了 GVim,则默认情况下应该在 vim 的 GUI 和终端实例中启用该功能。 - Braden Bestxclip
。你的回答非常好用。 - HankCa:%y+
这个方法,但没关系,你已经覆盖了所有情况!干得好。 - HankCals
输出的简单解决方案是:ls | xclip -i -selection clipboard
。 - user2585716