在 wsl1 上,使用 powerhshell 获取剪贴板内容会改变终端外观……?

在 wsl1 上,使用 powerhshell 获取剪贴板内容会改变终端外观……?

我将其发布在堆栈上(现已删除),但被告知这可能是一个更合适的论坛。

我在 windows-subsystem-linux 1 上使用 Ubuntu,并使用Windows Ubuntu 终端。

使用这篇文章中的建议:https://stackoverflow.com/questions/17819814/how-can-you-get-the-clipboard-contents-with-a-windows-command

我正在调用 powershell 将剪贴板的内容输出到文件,如下所示:

powershell.exe -command "Get-Clipboard" > myFile.txt

这完全改变了我的终端的外观,我想我可能正在运行 powershell 或类似的东西。请参阅下面的“重定向到文件之前”和“重定向到文件之后”。它还会在屏幕的大约 3/4 后截断我的终端。

您会注意到窗口描述现在显示“powershell.exe”。但我仍然可以运行 Linux 命令,并且可以访问 bashrc 中定义的函数和别名,因此我并不是突然进入了 powershell 环境。

奇怪的是,如果我运行powershell.exe -command "Get-Clipboard"(即不重定向),它会将剪贴板内容输出到终端而不会影响我的终端外观。

打字ctrl-c没有任何反应。ctrl-d或者打字exit只会终止终端。

您对正在发生的事情有什么想法吗?

前:

在此处输入图片描述

重定向到终端后:

在此处输入图片描述

重定向到文件后:

在此处输入图片描述

答案1

根据评论和我们的测试,这似乎是“Ubuntu 终端”(使用 Ubuntu WSL 发行版从 Windows 开始菜单启动的终端)的问题。其他终端,如 hyper.js、Windows 终端(来自 Microsoft,在商店中)和默认 Windows 终端(使用“开始”菜单中的“bash”命令时启动)似乎都可以正常工作。

建议 - 安装备用终端。我个人偏爱 Windows 终端。

答案2

这是一个问题旧版本Windows PowerShell 的:

Windows PowerShell 中有一个检查功能,用于查看 Consolas 字体是否支持该代码页。列表如下这里。UTF-8 65001 不在该列表中,因此每当 Windows PowerShell 识别到 Consolas 不支持的代码页时,它都会将字体更改为 Terminal。PowerShell Core 6.x 不再有此代码,因此您不会看到此行为。

你需要下载并安装较新版本的 PowerShell Core(6 或更高版本)并重写您的命令以使用pwsh.exe(指向较新的 PowerShell Core 6 或更高版本)而不是powershell.exe(指向较旧的 Windows PowerShell 5.1),如下所示:

pwsh.exe -command "Get-Clipboard" > myFile.txt

相关内容