我正在尝试让 WSL 使用我的剪贴板,以便我可以通过 更新输出中的文件xsel -b > my-umatrix-rules.txt
。但是,我收到以下错误:
xsel: Can't open display: (null) : Inappropriate ioctl for device
我认为这与它与 Windows 分开包含以及剪贴板本身有关。有没有办法让 WSL 能够查看剪贴板?
答案1
从 Windows 剪贴板到 WSL
获取信息从将 Windows 剪贴板放入 WSL,使用 PowerShell 和 Get-Clipboard cmdlet,如下所示:
powershell.exe -c Get-Clipboard > my-umatrix-rules.txt
从 WSL 到 Windows 剪贴板
发送数据到从 WSL 中删除 Windows 剪贴板,我知道的最简单的方法是使用clip.exe
,如下所示:
cat my-umatrix-rules.txt | clip.exe
请注意,虽然不适用于此特定用例,但如果您需要捕获两个输出和WSL 中的应用程序错误地复制到 Windows 剪贴板(常见场景),只需使用普通的 Linux 重定向,例如:
# <command> 2>&1 | clip.exe
ls kdkdkdkd * 2>&1 | clip.exe
答案2
| clip.exe
很好。但是,当你的字符串包含特殊字符(例如中文)时,它们的输出就很奇怪。
这是我的别名。
alias clip='powershell.exe -c "chcp 65001 >\$null; clip.exe"'
alias past='powershell.exe -c Get-Clipboard'
在clip
别名中,它使用 PowerShell 并首先将其输出编码更改为 UTF-8(代码页 65001),然后使用clip.exe
。
然后你可以使用
$ echo '测试' | clip
$ past
测试
去测试。