Answers:
您要做的是自定义提示。
PowerShell 3.0及更高版本中的默认提示是:
function prompt
{
"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
}
现在的Windows 10 支持的ANSI转义代码在其conhost,以及24位色彩的,因为1703的支持。
要使用ANSI转义码之一,我们需要一个文字ESC字符。这是八进制033,或十进制27。在Bash中,您将使用"\033"
或"\e"
;PowerShell中没有直接等价的序列,但是您可以嵌入一个表达式:"$([char]27)"
在PowerShell Core中,您可以改用"`e"
转义序列。感谢asherber的评论。
例如,这意味着您可以使用以下转义序列通过以下代码将背景色设置为青色46
:
"$([char]27)[46m"
可以这样使用:
echo "$([char]27)[46mColoured text"
为了使内容更具可读性,让我们定义一个变量:
$ESC = [char]27
因此我们可以使用:
"$ESC[46m"
$ESC
文字ESC字符在哪里,[
定义了参数列表的开始和m
结束。
在命令中使用它:
echo "$ESC[46mColoured text"
为了恢复原始的颜色设置,我们使用以下代码0
:
echo "$ESC[46mColoured text$ESC[0mUncoloured text"
如果您对基本的16色调色板不满意,则可以将完整的24位色用于以下形式:
"$ESC[48;2;<r>;<g>;<b>m"
其中<r>
,红色代表0-255之间的十进制值,<g>
绿色<b>
代表蓝色,例如"$ESC[48;2;255;0;123m"
请参考文档以获取更多信息。
实际上,这一切都直接与您在bash中执行的操作等效,除了需要使用$ESC
(定义好之后)代替\e
or \033
。
将它们放在一起,我们可以在修改后的提示中使用ANSI颜色转义码来更改背景色:
function prompt
{
$ESC = [char]27
"$ESC[46mPS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) $ESC[0m"
}
如果您希望在所有会话中都能保持这种状态,请将其添加到您的个人资料中(如.bashrc
)。您可以在中查看个人资料的路径$profile
。
[char]27
。我不确定这是否是在早期版本中添加的。