我想将它们复制到剪贴板,以便可以将其粘贴回Windows记事本。
我由于访问限制,无法将文件从该服务器复制到另一个服务器。
#1 楼
X11如果使用X11(在传统的Unix或Linux系统上最常见的GUI),要将文件内容复制到X11 CLIPBOARD选择中而不显示它,则可以使用
xclip
或xsel
实用程序。 > xclip -sel c < file
或:
xsel -b < file
将
file
的内容存储为CLIPBOARD X11选择。存储命令的输出:
mycommand | xclip -sel c
mycommand | xsel -b
请注意,应使用UTF-8编码进行存储,否则粘贴将无法正常进行。如果
file
是使用其他字符集编码的,则应首先转换为UTF-8,例如:<file iconv -f latin1 -t utf8 | xclip -sel c
用于以latin1 / iso8859-1编码的文件。
xsel
不会使用二进制数据(它不接受空字节),但是xclip
可以。将其存储为CUT_BUFFER(当没有任何声明CLIPBOARD或PRIMARY X选择并且不要求“不需要运行一个进程来像选择那样运行它),尽管现在您可能不希望使用或使用它:
xprop -root -format CUT_BUFFER0 8s -set CUT_BUFFER0 "$(cat file)"
(从
xterm
删除尾随换行符)。GNU屏幕
GNU
file
具有screen
命令,可将文件内容插入其自己的复制粘贴缓冲区(使用readbuf
粘贴)中。因此:screen -X readbuf file
Apple OS / X
尽管Apple OS / X可以使用X11。除非您运行X11应用程序,否则默认情况下它不会。您将可以在那里使用
^A]
或xclip
,因为OS / X应该将X11 CLIPBOARD选择与OS / X粘贴板缓冲区同步,但是仅出于此目的而启动X11服务器会有些浪费。在在OS / X中,可以使用
xsel
命令将任意内容存储到粘贴板缓冲区中:pbcopy < file
(该文件的字符编码应该是语言环境的字符编码)。存储命令的输出:
mycommand | pbcopy
Shells
大多数外壳都有自己的复制粘贴缓冲区。在emacs模式下,剪切和复制操作将复制/剪切的文本存储到堆栈中,然后使用Ctrl-Y提取/粘贴,然后使用Alt + Y循环遍历zsh CUTBUFFER / killring
在
pbcopy
中,堆栈存储在zsh
数组中,堆栈的顶部存储在$killring
变量中,尽管这些变量仅可从Zsh Line Editor(zle)小部件获得,并且一些专门的小部件是操作这些小部件的首选方式。因为这些只能通过ZLE使用,使用命令很难做到:
zmodload zsh/mapfile
zle-line-init() {
if [ -n "$FILE_TO_COPY" ]; then
zle copy-region-as-kill $mapfile[$FILE_TO_COPY]
unset FILE_TO_COPY
fi
}
mycommand | pbcopy
mycommand | pbcopy
zle -N zle-line-init
file-copy() FILE_TO_COPY=:A
$CUTBUFFER
特殊小部件在启动时执行一次每个新的命令提示符。这意味着该文件仅在下一个提示符下被复制。例如,如果您执行以下操作:file-copy file; sleep 2
仅在这2秒钟之后复制文件。
评论
我遇到此错误:错误:无法打开显示:(空)
– Marcelo Filho
18/12/12在18:48
fedora 7中的同样问题
– Michael Pacheco
19年4月4日在16:48
@ MarceloFilho,xclip和xsel是X11实用程序,它们操纵X11选择,因此只能在设置$ DISPLAY的X11环境中使用。
–StéphaneChazelas
19年5月19日在11:43
#2 楼
也许你想问这个。但是您要读取的任何文件都必须通过某些系统调用来打开。如果您无权访问文件,则无法阅读。那就是限制访问的想法。评论
那么您的实际问题是什么?如果您可以阅读但不能复制,则可能无法书写。但是,当您要复制时,需要将数据写入某处。
– ikrabbe
15年6月24日在13:48
#3 楼
我安装了xclip并创建了一个名为“ copy”的脚本,该脚本以文件名作为参数。#! /bin/bash
xclip -selection clipboard -i $@
示例用法:
copy id_rsa.pub
将我的公钥复制到剪贴板。 />
评论
好的,如果可以的话,有一种简单的方法可以复制非常大的文件。我大概有1000行。如果文件很大,剪贴板仍然会失败。当访问限制说您无法读取文件时,您当然会迷路。如果由于无法写文件而无法复制文件,则必须问自己,是否还有另一个可以写的目的地。
您也许可以在系统本身上编辑文件。然后,您无需在任何地方复制内容。
我刚刚问了一个相关的问题,因为从Windows上的Git Bash登录Ubuntu时,xclip无法正常工作:stackoverflow.com/q/60117294/470749