$ foo -v
Error: not a real TTY
details:
blah blah @ 0x0000000040abeaf4
blah blah @ 0x0000000040abeaf8
blah blah @ 0x0000000040abeafc
blah blah @ 0x0000000040abeb00
...
$ foo -v | DISPLAY=:1 xsel -b # copies it into clipboard of display :1
然后,我可以按照惯例将其改为表格 .
现在说支持站点上有人给我一个命令来运行来解决问题 . 这很复杂而且很长 .
$ DISPLAY=:1 xsel -bo
sudo foo --update --clear-cache --source-list="http://foo-software.com/repository/foo/debian/ubuntu/xenial/164914519191464/sources.txt"
$ $(DISPLAY=:1 xsel -bo)
Password for braden:
UPDATING %%%%%%%%%%%%%%%%%%%%%%% 100.00%
Clearing cache...
Fetching sources...
Reticulating splines...
Watering trees...
Climbing mountains...
Looking advanced...
Done.
$ foo
Thank you for your order. A pizza should arrive at your house in the next 20 minutes. Your total is $6.99
:%y+ ; copy/yank (y) everything (%) into the CLIPBOARD selection (+)
"+p ; select (") the CLIPBOARD selection (+) and paste/put it
ggVG"+y ; Alternative version of the first example
如果你的vim副本不是世界末日 . 您可以使用上一节中描述的 xsel 技术 .
:r ! xsel -bo ; read (r) from the stdout of (!) `xsel -bo`
:w ! xsel -b ; write (w) to the stdin of (!) `xsel -b`
#!/usr/bin/python
import sys
# Clipboard storage
clipboard_file = '/tmp/clipboard.tmp'
if(sys.stdin.isatty()): # Should write clipboard contents out to stdout
with open(clipboard_file, 'r') as c:
sys.stdout.write(c.read())
elif(sys.stdout.isatty()): # Should save stdin to clipboard
with open(clipboard_file, 'w') as c:
c.write(sys.stdin.read())
#!/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 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
8
xsel 在Debian / Ubuntu / Mint上
# append to clipboard:
cat 'the file with content' | xsel -ib
# or type in the happy face :) and ...
echo 'the happy face :) and content' | xsel -ib
# show clipboard
xsel -b
# Get more info:
man xsel
23 回答
确保使用别名
xclip="xclip -selection c"
否则您不能仅使用Ctrl v将其粘贴回其他位置 .Ctrl v
=== test
在macOS上使用内置的pbcopy和pbpaste命令 .
例如,如果你跑
~/.bashrc
文件的内容可用于使用Cmd
v
快捷键进行粘贴 .有几种方法 . 已经提到的一些方法包括(我认为)tmux,screen,vim,emacs和shell . 我不知道emacs或屏幕,所以我会回顾其他三个 .
Tmux
虽然不是X选择,但tmux具有可通过
prefix-[
访问的复制模式(prefix
默认为Ctrl B) . 用于此模式的缓冲区是独立的,并且是tmux独有的,这开启了很多可能性,并使其在正确的情况下比X选择更加通用 .要退出此模式,请按q;要导航,请使用
vim
或emacs
绑定(默认= vim),因此hjkl
用于移动,v/V/C-v
用于字符/行/块选择等 . 选择后,按Enter键复制并退出模式 .要从此缓冲区粘贴,请使用
prefix-]
.壳牌
默认情况下,
X11
的任何安装似乎都带有两个程序:xclip
和xsel
(有点像startx
和xinit
一样) . 大多数其他答案都提到xclip
,我真的很喜欢xsel
,因为它的简洁,所以我将覆盖xsel
.来自xsel(1x):
这就是你需要知道的一切 .
p
(或什么都没有)PRIMARY
,s
表示SECONDARY
,b
表示CLIPBOARD
,o
表示输出 .示例:假设我想从TTY复制
foo
的输出并将其粘贴到网页以获取错误报告 . 要做到这一点,最好是复制到TTY / X会话或从TTY / X会话复制 . 那么问题就变成了如何从TTY访问剪贴板?对于此示例,我们假设X会话正在显示
:1
.然后,我可以按照惯例将其改为表格 .
现在说支持站点上有人给我一个命令来运行来解决问题 . 这很复杂而且很长 .
比萨订购似乎是对命令行的高效使用 .
...继续 .
Vim
如果用
+clipboard
编译(这很重要!检查vim --version
),Vim应该可以访问XPRIMARY
和CLIPBOARD
选项 . 这两个选项分别可以从*
和+
寄存器访问,并且可以在闲暇时写入和读取,与任何其他寄存器相同 . 例如:如果你的vim副本不是世界末日 . 您可以使用上一节中描述的
xsel
技术 .绑定几个关键的组合,你应该是好的 .
在用于Linux的Windows子系统上,您可以使用clip.exe将其复制到剪贴板 .
请记住使用
|
pipe命令 . 而不是>
命令,因为那不起作用 .在Windows上(使用Cygwin)尝试
cat /dev/clipboard
或echo "foo" > /dev/clipboard
,如this文章中所述 .从这个线程,有一个选项,不需要安装任何
gclip
/xclip
/xsel
第三方软件 .perl脚本(因为perl通常总是安装)
复制并粘贴到Windows中的剪贴板(Cygwin):
看到:
$ clip.exe - ?
CLIP描述:将命令行工具的输出重定向到Windows剪贴板 . 然后可以将此文本输出粘贴到其他程序中 . 参数列表:/?显示此帮助消息 . 示例:DIR | CLIP将当前目录列表的副本放入Windows剪贴板 . CLIP <README.TXT将readme.txt中的文本副本放在Windows剪贴板上 .
还存在getclip(可以代替shift ins!),putclip(echo oaeuoa | putclip.exe把它放到剪辑中)
这是一个简单的Python脚本,可以满足您的需求:
将其保存为路径中的某个可执行文件(我将其保存到
/usr/local/bin/clip
. 您可以将管道内容保存到您的路径中剪贴板...你可以将剪贴板中的内容传送给其他程序......
单独运行它只会输出剪贴板中的内容 .
哇,我简直不敢相信这个问题有多少答案 . 我不能说我已经尝试了所有这些,但我已经尝试过前3或者4,但它们都不适合我 . 对我有用的是一个答案,位于一个名为doug的用户写的评论中 . 由于我觉得它很有用,我决定重新回答一下 .
安装xcopy实用程序,当您在终端时,输入:
Copy
Paste
我注意到很多答案推荐pbpaste和pbcopy . 如果您使用这些实用程序但由于某些原因它们在您的仓库中不可用,您可以随时为xcopy命令创建别名并将其命名为pbpaste和pbcopy .
那么它看起来像这样:
你're a little ambiguous. I expect you'可能是X内的Linux用户想要把东西放在X
PRIMARY
剪贴板中 .重要的是要了解
bash
没有剪贴板 . 没有"the"剪贴板,因为bash
可以在Windows,Mac OS X,许多其他操作系统,X内部,X外部运行,...更不用说X本身有三个不同的剪贴板 . 你可以处理很多剪贴板 . 通常,您要与之交谈的剪贴板都有一个实用程序,可让您与之交谈 .在X的情况下,是的,有
xclip
(和其他人) .xclip -selection c
将数据发送到剪贴板,在大多数应用程序中使用Ctrl-C,Ctrl-V .如果你're trying to talk to the Mac OS X clipboard, there' s
pbcopy
.如果您处于Linux终端模式(没有X),那么您可能需要查看
gpm
.还有GNU screen,它有一个剪贴板 . 要把东西放在那里,请查看
screen
命令“readreg
” .在Windows / cygwin下,对于较新版本的Windows(至少是Windows 10),请使用
/dev/clipboard
或clip
.是x11的工作,它主要是已安装 . 在xsel的手册页中查看是值得的 .
虽然> 1年后,我的解决方案略有不同 . 希望这对某人有用 .
昨天我发现自己的问题:"How to share the clipboard between different user sessions?" . 事实上,当您使用ctrlaltF7 - ctrlaltF8在会话之间切换时,您无法粘贴您复制的内容 .
基于命名管道,我提出了以下快速而肮脏的解决方案 . 它肯定是非常裸露和原始的,但我发现它功能:
然后在发送终端
最后,在接收终端:
现在,您在第一个终端中输入或粘贴任何内容,并且(在点击返回后),它将立即出现在接收终端中,您可以在任何地方再次复制/粘贴 .
当然,这并不仅仅是严格地从user1的剪贴板中获取内容,使其在user2的剪贴板中可用,而是需要额外的一对粘贴和复制点击 .
2018回答
使用clipboard-cli . 它适用于macOS,Windows,Linux,OpenBSD,FreeBSD和Android,没有任何实际问题 .
安装它:
npm install -g clipboard-cli
那你可以做
echo foo | clipboard
如果需要,可以通过在
.bashrc
,.bash_profile
或.zshrc
中添加以下内容来为cb
添加别名:alias cb=clipboard
尝试
xclip
man
我几年前写的一些Windows程序 . 它们允许您转储,推送,追加和打印剪贴板 . 它的工作原理如下:
它包括源代码:cmd_clip.zip
仅适用于Mac:
它们位于
/usr/bin/pbcopy
和/usr/bin/pbpaste
.在macOS中使用
pbpaste
例如:
更新剪贴板
pbpaste | ruby -ne ' puts "\|" + $_.split( )[1..4].join("\|") ' | pbcopy
请享用 .
这是一个随时可用的bash脚本,用于读取可在多个平台上运行的剪贴板 . 如果您添加功能(例如更多平台),请在此处编辑脚本 .
xsel 在Debian / Ubuntu / Mint上
安装
如果您像我一样在没有root权限的Linux服务器上运行,并且没有xclip或gpm,您可以通过使用临时文件来解决此问题 . 例如:
安装
如果您无权访问
apt-get
或pacman
,也无法访问dnf
,则可以在sourceforge上获取源 .设置
Bash
在
~/.bash_aliases
中,添加:不要忘记使用
. ~/.bash_aliases
或重新启动配置文件来加载新配置 .鱼
在
~/.config/fish/config.fish
中,添加:不要忘记通过重新启动终端来重新启动fish实例以进行更改 .
用法
您现在可以使用
setclip
和getclip
,例如:还有xclip-copyfile .
Linux中有不同的剪贴板; X服务器有一个,窗口管理器可能有另一个,等等 . 没有标准设备 .
哦,是的,在CLI上,屏幕程序有它自己的剪贴板,以及Emacs和vi等其他一些应用程序也是如此 .
在X中,您可以使用xclip .
您可以查看此主题以获取其他可能的答案:http://unix.derkeiler.com/Newsgroups/comp.unix.shell/2004-07/0919.html