Я имею в виду, чтобы войти в мой 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
Возможно, вы захотите использовать строки формата для расширения переменной внутри замены Regex:
$($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)