使用 Bash for Windows 复制到剪贴板

Posted

技术标签:

【中文标题】使用 Bash for Windows 复制到剪贴板【英文标题】:Copy to clipboard using Bash for Windows 【发布时间】:2017-08-25 22:07:29 【问题描述】:

如何将结果从命令行直接复制到剪贴板?

在 Windows 的 cmd.exe 上,我可以简单地执行 echo "asd" | clip 并将输出通过管道传输到剪贴板。

我尝试为此安装xclip,尽管它已编译,但在调用时会打印:

Error: Can't open display: (null)

使用鼠标不是解决办法。

【问题讨论】:

是否可以选择使用鼠标?如果是这样,只需突出显示文本。 肯定不是,我google了一下,看到很多这样的建议:) 对于熟悉结合复制和粘贴的xclip 的用户,您可能对paste command 感兴趣。 【参考方案1】:

这个好像还是不支持:(https://www.reddit.com/r/Windows10/comments/4gwnom/can_bash_on_windows_interact_with_the_system/)

一个聪明的解决方法是开源工具plak (https://github.com/sander/plak)

【讨论】:

【参考方案2】:

在 Build 14393 或更高版本中,如果您想在 WSL 控制台中将某些内容复制到剪贴板,只需将“.exe”添加到您在 Windows cmd 中执行的操作即可。

echo "aaa"|clip.exe

从剪贴板读取:

powershell.exe -command "Get-Clipboard"

【讨论】:

酷,升级到 WSL/Ubuntu 16 后开箱即用! echo 对我不起作用,但 cat 对我有用。即在命令提示符下输入cat filePath | clip.exe 这适用于从外壳到剪贴板,但是否有相反的解决方案?正在寻找 pbpastexclip -o 等价物。 @JetBlue 听起来您使用 echo 错误,然后 -- echo 只是将您提供给输出的文本打印出来。 cat 读取文件。 当我尝试将 io 重定向与从剪贴板读取选项一起使用时,会发生一些奇怪的事情。我可以很好地运行它,它会将剪贴板内容转储到命令行中,但是当我尝试做例如powershell.exe -command "Get-Clipboard" > test.txt,我的 WSL 窗口似乎丢失了除配色方案之外的所有个性化设置(字体大小、字体)。这是典型的吗?【参考方案3】:

为了复制非 ascii 字符(其他语言),我必须这样做:

echo 'αβψδεφγ' | iconv -f utf-8 -t utf-16le |剪辑.exe

utf-16le 排除了前面的 BOM,因此您可以将其粘贴回去

【讨论】:

我无法在我的计算机上运行 PowerShell 脚本,因此我创建了一个 bash 脚本。我尝试从 bash 脚本中运行 PowerShell,但未能获得我想要的结果,而这个解决方案是唯一有效的解决方案。 感谢分享!我在我的 WSL ~/.bashrc 文件中为此创建了一个别名:alias clip='iconv -f utf-8 -t utf-16le | clip.exe' 现在我可以像 echo 'αβψδεφγ' | clip 一样将输出通过管道传递给它 完美,正是我在 Cygwin 上运行所需要的。【参考方案4】:

如果你想要一些更“容易”使用的东西,你可以将来自@reker 的命令添加到你的 ~/.bashrc 文件中(如果你使用 zsh,你必须把它放在 ~/.zshrc 文件中)。

我将这两行添加到我的文件中:

alias paste="powershell.exe -command \"Get-Clipboard\""
function clip  "$1" | clip.exe;

我使用clip作为一个函数,所以我可以使用命令linux,比如('command' 'use this for command')。如果您更喜欢别名方式,可以添加类似

alias clip=clip.exe

您不必一直编写 .exe。

别忘了运行命令

source ~/.zshrc

保存文件后。否则,只有在重新启动控制台后才会应用更改。

【讨论】:

我一直在严格地寻找复制命令的输出,因为我经常这样做。我从来没有使用命令粘贴(我总是只做 shift+insert)。但这是一个很好的建议,谢谢! 存在一些错误。因此当路径中有空格时(使用 pwd),您无法复制和粘贴路径。它不会逃脱他们。

以上是关于使用 Bash for Windows 复制到剪贴板的主要内容,如果未能解决你的问题,请参考以下文章

当我通过 Git Bash 中的 ssh 在远程 Linux 机器上运行命令时,如何将文件的内容直接复制到我的 Windows 剪贴板中?

在Windows中,将当前窗口复制到剪贴板的快捷键是啥?

jquery复制文本到windows剪贴板的方法,jquery copy.js插件怎么用。

复制到剪贴板并使用libnotify发送通知

Windows编程系列第九篇:剪贴板使用

怎样将vim中的内容复制到windows剪切板?