所以我明白了:
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/