Web*_*tor 4 powershell command-prompt
我想缩短我的 PowerShell 提示符,以便它只显示父目录和当前目录。例如,如果密码是
C:\Users\ndunn\OneDrive\Documents\Webucator\ClassFiles\python-basics\Demos
Run Code Online (Sandbox Code Playgroud)
我希望提示是:
PS ..\python-basics\Demos>
Run Code Online (Sandbox Code Playgroud)
我可以PS ..\Demos> 通过更改prompt()Profile 文件中的函数来实现它:
$profile在 PowerShell 中运行来查找配置文件的位置。prompt()函数:function prompt
{
$folder = "$( ( get-item $pwd ).Name )"
"PS ..\$folder> "
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用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}$('>' * ($nestedPromptLevel + 1)) " -f $displayPath
}
Run Code Online (Sandbox Code Playgroud)
请注意,我选择了单个字符…( HORIZONTAL ELLIPSIS,U+2026 ) 来表示路径的省略部分,因为..可能会与引用父目录混淆。
注意:…只有当包含的脚本文件(假定为您的$PROFILE文件)保存为带有 BOM [1] 的UTF-8或 UTF-16LE(“Unicode”)时,才能正确识别非 ASCII 范围字符。
如果由于某种原因这对您不起作用,请使用三个不同的句点('...'而不是'…'),但请注意,这会导致提示更长。
[1] BOM 只是Windows PowerShell 中的必需品;相比之下,PowerShell Core默认采用 UTF-8,因此不需要 BOM。
| 归档时间: |
|
| 查看次数: |
667 次 |
| 最近记录: |