我想缩短我的PowerShell提示符,使其仅显示父目录和当前目录。例如,如果密码是
C:\Users\ndunn\OneDrive\Documents\Webucator\ClassFiles\python-basics\Demos
我希望提示是:
PS ..\python-basics\Demos>
通过更改配置文件中的PS ..\Demos>
功能,我将其变为prompt()
:
$profile
查找配置文件的位置。prompt()
功能:function prompt
{
$folder = "$( ( get-item $pwd ).Name )"
"PS ..\$folder> "
}
我尝试使用split()
和负索引,但无法使其正常工作。
另外,如果密码至少降低了两个级别,我只想这样做。如果密码是C:\ folder \ folder之类的,我想显示默认提示。
有什么想法吗?
尝试以下功能,该功能应可在Windows和类似Unix的平台(在PowerShell Core中使用):
function global:prompt {
$dirSep = [IO.Path]::DirectorySeparatorChar
$pathComponents = $PWD.Path.Split($dirSep)
$displayPath = if ($pathComponents.Count -le 3) {
$PWD.Path
} else {
'…{0}{1}' -f $dirSep, ($pathComponents[-2,-1] -join $dirSep)
}
"PS {0}> " -f $displayPath
}
注意,我选择了单个字符…
(HORIZONTAL ELLIPSIS, U+2026
)来表示路径的省略部分,因为U+2026
可能与引用parent目录混淆。
注意:仅当封闭脚本文件(假定为您的..
文件)保存为UTF-8 with BOM [1时,才能正确识别非ASCII范围的…
字符。 ]或UTF-16LE(“ Unicode”)。
[如果由于某种原因对您不起作用,请使用三个不同的句点($PROFILE
而不是'...'
),但请注意,这将导致提示时间更长。
[[1] BOM仅在Windows PowerShell中是必需的;相比之下,PowerShell Core默认采用UTF-8,因此不需要BOM。
尝试一下(评论太久了:):
'…'