我的意思是進入 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)