我正在运行一个整洁的Go应用程序,它提供了一个具有颜色、“特殊”字符和普通的POSIXey读行体验的交互式shell。
当我在cmd.exe中直接运行这个应用程序时(在Windows10Pro 64位1903上),它显示了一个关于颜色支持的警告,并且稍微降低了(请忽略可能是我的机器设置的错误)。
cmd> bettercap.exe警告:此终端不支持颜色,视图将非常有限。

当我通过Docker在cmd.exe中运行相同的应用程序时,我会得到类似的降级体验。
$ docker run --rm bettercap/bettercap警告:此终端不支持颜色,视图将非常有限。

当我通过Docker在cmd.exe中运行相同的应用程序时,但是使用交互式/tty标志,我可以获得完整的Linux,就像经验和功能一样。
cmd> docker run --rm -it bettercap/bettercap

我想要理解的是(坦白地说,在任何级别) Docker是如何“升级”控制台的功能的。据我所知,cmd.exe就是不能做那些事情?我对有关最近的ConPTY升级的文章很熟悉,但我不确定我是否完全了解它,也不知道它是如何发挥作用的,也不知道它在起什么作用。
发布于 2019-07-12 17:21:21
Docker没有“升级”CMD,CMD允许颜色,这取决于在CMD中运行的可执行文件被编码以将颜色发送到屏幕上。
从本质上说,你只是告诉码头,继续做,并这样做。
即。您可以在CLI ( CMD )上使用C#编写一个可执行文件,并以CMD支持的任意颜色写入任何文本,它将显示得很好。
在我的生活中,我不知道为什么微软在过去的30年里故意不给CMD/DOS中99%的命令着色。
尽管我现在认为这是一件他们认为是白费力气的事情,因为他们确实改变了Powershell的颜色,并致力于继续这样做,特别是现在它支持Linux。
另请注意:
CMD本身允许您一次更改整个提示符的FG和BG颜色。
还可以编写CMD脚本,在整个文本中着色BG/FG的部分,而不用使用"FindStr“或VBScript以及PowerShell更改整个提示符
https://stackoverflow.com/questions/57008555
复制相似问题