我的意思是进入我的 PS 5.1 提示
~\Documents
代替
C:\Users\USER1\Documents
但是在尝试其中一个“构建块”时,我收到了错误
> $($executionContext.SessionState.Path.CurrentLocation) -replace $env:USERPROFILE, '~'
The regular expression pattern C:\Users\USER1 is not valid.
At line:1 char:3
...
我的意思是包括这个
$ESC = [char]27
$BLUE="$ESC[1;34m"
$RESET="$ESC[0m"
function prompt
{
$cwd = $($executionContext.SessionState.Path.CurrentLocation) ;
# $my_new_var=USE THE REPLACING COMMAND
"$BLUE$my_new_var$('>' * ($nestedPromptLevel + 1)) $RESET"
}
我该如何逃脱$env:USERPROFILE
才能使它发挥作用?
这对我有用吗prompt
?
答案1
这将执行您要查找的替换:
($executionContext.SessionState.Path.CurrentLocation).ToString().Replace($env:USERPROFILE, '~')
答案2
也许您想使用格式字符串来扩展正则表达式替换中的变量:
$($executionContext.SessionState.Path.CurrentLocation) -replace ("{0}" -f $env:USERPROFILE), '~'
答案3
如果您移动到 $HOME 目录之上,可能会遇到麻烦。如果您始终想要路径的最后一个元素,我会使用以下方法之一:
'~\{0} -f ($executionContext.SessionState.Path.CurrentLocation).Path.Split('\')[-1]
'~\{0}' -f (Split-Path ($executionContext.SessionState.Path.CurrentLocation).Path -Leaf)