使用 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
。
这适用于从外壳到剪贴板,但是否有相反的解决方案?正在寻找 pbpaste
或 xclip -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 剪贴板中?