从WSL将文件内容复制到Windows的剪贴板?

34

设备描述:

我在Windows 10上的Windows子系统Linux(WSL)中安装了Debian。

  • 主机代表Windows 10。
  • 表示我的WSL-Debian框/容器。

目标:

  • 我在WSL中有一个SSH密钥(my_rsa.pub);
  • 我想通过在框中运行命令(命令行代码,不使用鼠标)将该文件的内容复制到主机的剪贴板中;

解释:

SSH文件非常长,使用鼠标光标复制它们没有意义。

我被告知Debian不带有剪贴板:需要安装剪贴板吗?所以,我甚至不知道从哪里开始查找。

我尝试过的方法:

“VIM中复制到剪贴板”已配置并正常工作,但任何复制到“剪贴板”的内容都会在关闭VIM后从“剪贴板”中删除;类似地,Nano具有CTRL+u函数来剪切文本,并且其剪贴板无法在Nano之外存活。

2个回答

51
  • 命令:
cat /path/to/file | clip.exe
  • 描述:

cat 命令将文件内容输出到屏幕上。 然后将其管道传递给 clip.exe,一个Win32程序,将输出重定向到Windows剪贴板。 不要忘记为后者添加 .EXE 扩展名。 有多个可用的 cat 替代方法,请参见此处此处


基本上,我在发现“clip”是Windows包后就已经预料到了这一点。不过直到现在我才知道如何将管道传输到PowerShell!谢谢! - Wolfpack'08
1
@Wolfpack'08 你可以观看微软的任何WSL视频,这是他们的第一个营销特色。 - Biswapriyo
它不起作用。有没有一些调试的方法? ➜ ~ echo aaaaaaaa | clip.exe ➜ ~ echo $? 1 - Jiang YD

3

(@Biswapriyo的正确答案的替代方案)

使用win32yank.exe

将.exe文件添加到$PATH环境变量中:

cat /path/to/file | win32yank.exe -i

使用 Neovim

cat /path/to/file | nvim -c 'normal ggVG"+yZQ' --headless -

说明

Neovim使用外部程序与系统剪贴板交互,而这个特定的程序在不同平台上会有所不同。在Windows上它使用win32yank.exe。选项-c允许在文件加载后执行命令,--headless使Neovim无界面运行,结尾的-表示从标准输入读取。因此,如果您已经在WSL中配置好了Neovim以与剪贴板配合工作,那么这也应该可以工作(基本等效于直接调用win32yank.exe)。

配置Neovim在WSL中的剪贴板:

https://github.com/neovim/neovim/wiki/FAQ#how-to-use-the-windows-clipboard-from-wsl


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接