gpt4 book ai didi

powershell - 如何在 powershell 提示符中使用波浪号?

转载 作者:行者123 更新时间:2023-12-04 14:41:08 24 4
gpt4 key购买 nike

所以我明白了:

function global:prompt {
# Commands go here
}

在 powershell 中设置提示。我可以用 Get-Location获取当前工作目录。我可以 cd ~并在我的家目录中。

但是我可以让提示使用波浪号吗?例如,如果我在 /home/mike它应该只显示 ~ .

我试过测试:
$pwd -contains $home

但结果并不正确。

如何在powershell的提示中使用~?

最佳答案

您可以更换 $HOME~使用正常的字符串替换。前任。

获取当前提示功能:

Get-Content Function:\prompt

"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) ";
# .Link
# http://go.microsoft.com/fwlink/?LinkID=225750
# .ExternalHelp System.Management.Automation.dll-help.xml

然后替换 $home~当前路径为 $home时或 $home\* .

使用开关(可读):
function global:prompt {

$path = switch -Wildcard ($executionContext.SessionState.Path.CurrentLocation.Path) {
"$HOME" { "~" }
"$HOME\*" { $executionContext.SessionState.Path.CurrentLocation.Path.Replace($HOME, "~") }
default { $executionContext.SessionState.Path.CurrentLocation.Path }
}

"PS $path$('>' * ($nestedPromptLevel + 1)) ";
}

使用正则表达式(推荐):
function global:prompt {

$regex = [regex]::Escape($HOME) + "(\\.*)*$"

"PS $($executionContext.SessionState.Path.CurrentLocation.Path -replace $regex, '~$1')$('>' * ($nestedPromptLevel + 1)) ";

}

使用 Split-Path (丑陋的):
function global:prompt {

$path = $executionContext.SessionState.Path.CurrentLocation.Path
$p = $path

while ($p -ne "") {
if($p -eq $HOME) { $path = $path.Replace($HOME,"~"); break}
$p = Split-Path $p
}

"PS $path$('>' * ($nestedPromptLevel + 1)) ";

}

演示:
PS C:\> cd ~

PS ~> cd .\Desktop

PS ~\Desktop>

关于powershell - 如何在 powershell 提示符中使用波浪号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39186373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com