如何更改PowerShell提示符以仅显示父目录和当前目录?

问题描述 投票:1回答:2

我想缩短我的PowerShell提示符,使其仅显示父目录和当前目录。例如,如果密码是

C:\Users\ndunn\OneDrive\Documents\Webucator\ClassFiles\python-basics\Demos

我希望提示是:

PS ..\python-basics\Demos> 

通过更改配置文件中的PS ..\Demos>功能,我将其变为prompt()

  1. 通过在PowerShell中运行$profile查找配置文件的位置。
  2. 打开(或创建并打开)配置文件。
  3. 更改(或添加)以下prompt()功能:

function prompt
{
  $folder = "$( ( get-item $pwd ).Name )"
  "PS ..\$folder> "
}

我尝试使用split()和负索引,但无法使其正常工作。

另外,如果密码至少降低了两个级别,我只想这样做。如果密码是C:\ folder \ folder之类的,我想显示默认提示。

有什么想法吗?

powershell command-prompt
2个回答
2
投票

尝试以下功能,该功能应可在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。


0
投票

尝试一下(评论太久了:):

'…'
© www.soinside.com 2019 - 2024. All rights reserved.