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

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

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

评论

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

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

您也许可以在系统本身上编辑文件。然后,您无需在任何地方复制内容。

我刚刚问了一个相关的问题,因为从Windows上的Git Bash登录Ubuntu时,xclip无法正常工作:stackoverflow.com/q/60117294/470749

#1 楼

X11
如果使用X11(在传统的Unix或Linux系统上最常见的GUI),要将文件内容复制到X11 CLIPBOARD选择中而不显示它,则可以使用xclipxsel实用程序。 >
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将我的公钥复制到剪贴板。 />