将文件复制到剪贴板的等效命令行是什么?


89

等效于在文件管理器中对文件按CTRL + C以便将文件(而非文件名)复制到剪贴板的命令行是什么?

例如,当您想将终端中目录中的文件复制到剪贴板以将文件快速粘贴到文件管理器中的目录中时,这可能会非常有用且快速。还有其他


在我看来,这真的不像是重复的。答案之一是关于一般的复制粘贴普遍,而这一次是关于复制文件特定主题
雅典BN

Answers:


104

当您在文件管理器中的文件上按Ctrl-C时,该文件的内容不会复制到剪贴板。一个简单的测试:在文件管理器中选择一个文件,按Ctrl-C,打开一个文本编辑器,按Ctrl-V。结果不是文件的内容,而是文件的完整路径。

实际上,情况要复杂一些,因为您不能做相反的事情-从文本编辑器复制文件名列表并将其粘贴到文件管理器中。

要将某些数据从命令行复制到X11剪贴板,您可以使用xclipcommand,可以将其安装在

sudo apt-get install xclip

复制文件内容或某些命令的输出到剪贴板使用

cat ./myfile.txt|xclip -i

然后可以使用鼠标中键将文本粘贴到某处(这称为“主要选择缓冲区”)。

如果要将数据复制到“剪贴板”选择中,以便可以使用Ctrl-V将其粘贴到应用程序中,则可以

cat ./myfile.txt|xclip -i -selection clipboard

为了能够从命令行复制文件并将其粘贴到文件管理器中,您需要指定正确的“目标原子”,以便文件管理器能够识别剪贴板中的数据,并以正确的格式提供数据-幸运的是,在文件管理器中复制文件的情况下,它只是一个绝对文件名列表,每个文件名都换行,这很容易使用find命令生成:

find ${PWD} -name "*.pdf"| xclip -i -selection clipboard -t text/uri-list

(至少这在KDE中对我有效)。现在,您可以包装成一个小的脚本,可以调用它,例如cb

#!/bin/sh
xclip -i -selection clipboard -t text/uri-list

然后将其放入~/bin,在其上设置可执行位并按如下方式使用它:

find ${PWD} -name "*.txt"| cb

很好,不是吗?


很好,但仅适用于文本,实际上不是文件,而只是文本。假设您有一个jpg文件?
Strapakowsky 2012年

是的,我知道这种效果,如果您从文件管理器复制文件,如果将其粘贴到另一个文件夹中,则会粘贴该文件,但是如果粘贴到文本编辑器中,则会得到文件路径。
Strapakowsky 2012年

如果是二进制文件(jpg等),则一切都更加复杂。在这里,我问了一个受您启发的问题-unix.stackexchange.com/questions/53503/…-阅读有关“目标原子”和东西的信息
Sergey

1
听说xclip还支持使用xclip-copyfile和复制文件xclip-pastefile。我虽然还没有真正使用它,但这可能是一个解决方案。
Gladen

哇,@ Gladen,我想您需要将其作为单独的答案发布。尽管使用xclip-copyfilethen 时它确实起作用xclip-pastefile,但似乎不适用于Ubuntu文件管理器...
Sergey 2012年

9

听说xclip还支持使用xclip-copyfile和复制文件xclip-pastefile。我虽然还没有真正使用它,但这可能是一个解决方案。


那只是复制文件名,而不是文件内容。只需看一下手册页示例,即$ man xclip-copyfile
Craig

0

Mac OS具有pbcopy更简单的语法:

pbcopy < ~/.ssh/id_rsa.pub 

要么

cat ~/.ssh/id_rsa.pub  | pbcopy

pbcopy使用xclip(通过安装sudo apt install xclip)在Ubuntu上模拟:

alias pbcopy='xclip -selection clipboard'
alias pbpaste='xclip -selection clipboard -o'
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.