将文件的内容复制到剪贴板中而不显示其内容


64

如何在UNIX中复制文件内容而不显示文件内容。我不想让cat或vi看到其中的内容。

我想将它们复制到剪贴板,以便可以将其粘贴回Windows记事本中。

由于访问限制,我无法将该文件从该服务器复制到另一个服务器。


如果不打开文件就无法访问文件的内容...
123

好的,如果可以的话,有一种简单的方法可以复制非常大的文件。我大概有1000行。
Web Nash

如果文件很大,剪贴板仍然会失败。当访问限制说您无法读取文件时,您当然会迷路。如果由于无法写文件而无法复制文件,则必须问自己,是否可以写另一个目的地。
ikrabbe 2015年

很大 1000行。选一个。
2015年

2
什么是Windows记事本 BTW?
斯特凡Chazelas

Answers:


76

X11

如果使用X11(在传统的基于Unix或Linux的系统上最常见的GUI),要不显示文件就将文件内容复制到X11 CLIPBOARD选择中,则可以使用xclipxsel实用程序。

xclip -sel c < file

要么:

xsel -b < file

要存储的内容file作为CLIPBOARD X11的选择。

请注意,应使用UTF-8编码进行存储,否则粘贴将无法正常进行。如果file使用其他字符集对进行编码,则应首先转换为UTF-8,例如:

iconv -f latin1 -t utf8 | xclip -sel c

对于以latin1 / iso8859-1编码的文件。

要将其存储为CUT_BUFFER(某些应用程序仍会查询这些内容,例如xterm当没有人声明CLIPBOARD或PRIMARY X选择并且不需要运行诸如选择之类的服务来运行它时),尽管您可能不想或现在需要使用:

xprop -root -format CUT_BUFFER0 8s -set CUT_BUFFER0 "$(cat file)"

(从中删除尾随换行符file)。

GNU屏幕

GNU screen具有将readbuf文件内容插入其自己的复制粘贴缓冲区(使用粘贴^A])的命令。所以:

screen -X readbuf file

苹果OS / X

尽管Apple OS / X 可以使用X11。除非您运行X11应用程序,否则默认情况下它不会。您将可以使用xclipxsel在此处使用OS / X,因为OS / X应该将X11 CLIPBOARD选择与OS / X粘贴板缓冲区同步,但是仅仅为此目的而启动X11服务器会有些浪费。

在OS / X上,可以使用以下pbcopy命令将任意内容存储到粘贴板缓冲区中:

pbcopy < file

(文件的字符编码应为语言环境的字符编码)。

炮弹

大多数外壳程序都有自己的复制粘贴缓冲区。在emacs模式下,剪切和复制操作将复制/剪切的文本存储到堆栈中,您可以使用将该堆栈剪切/粘贴Ctrl-Y,然后使用循环遍历Alt+Y

zsh CUTBUFFER /杀人

在中zsh,堆栈存储在$killring数组中,堆栈的顶部存储在$CUTBUFFER变量中,尽管这些变量仅可从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
}
zle -N zle-line-init
file-copy() FILE_TO_COPY=$1:A       

zle-line-init特殊部件在每个新的命令提示符的开始执行一次。这意味着该文件仅在下一个提示符下被复制。例如,如果您这样做:

file-copy file; sleep 2

仅在这2秒钟后复制文件。


3
我遇到此错误:Error: Can't open display: (null)
Marcelo Filho

fedora 7中的相同问题
Michael Pacheco

@MarceloFilho,xclip并且xsel是X11事业,他们操纵X11的选择,所以只能在一个X11环境中使用$DISPLAY设置。
斯特凡Chazelas

2

也许你想问这个。但是您要读取的任何文件都必须通过某些系统调用来打开。如果您无权访问文件,则无法阅读。那就是限制访问的想法。


那么您的实际问题是什么?如果您可以阅读但不能复制,则可能无法书写。但是,当您要复制时,需要将数据写入某处。
ikrabbe 2015年

谢谢!!!您救了我的命)
Alena Kastsiukavets

0

使用X11:

xclip -o > file

如果您可以读取文件,则访问问题与目标服务器有关。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.