如何抑制在 Windows 终端中显示整个当前折叠路径,以便使其与在 Linux 中一样?

如何抑制在 Windows 终端中显示整个当前折叠路径,以便使其与在 Linux 中一样?

当您在 Windows 终端中工作时,您会在左侧看到完整的当前折叠路径。我想让它看起来像在 Linux 中一样,只显示最后一个目录名称,因为我当前的工作折叠太深并且路径需要超过一半的屏幕。我尝试通过大量短语在 Google 上搜索此问题,但一无所获。我想问题在于我的英语词汇与母语用户的不匹配。

windows 显示最后一条路径,就像在 linux 中一样,windows 不显示整个路径,powershell 不显示所有目录路径等等。没有给我任何有用或相关的信息。有没有办法设置命令抑制显示完整路径?

答案1

电源外壳默认情况下,Prompt是一个返回字符串的内置函数。在电源外壳提示尚未自定义的会话,可以通过输入以下内容查看底层代码:

  • (Get-Command prompt).ScriptBLock

     PS C:\>
     >> "PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel +
     >> 1)) ";
     >> # .Link
     >> # https://go.microsoft.com/fwlink/?LinkID=225750
     >> # .ExternalHelp System.Management.Automation.dll-help.xml
     >>
     >>
    

您可以使用此代码作为覆盖默认函数的自定义函数的基础。

在上文中,路径是通过以下代码获取的:

  • $($executionContext.SessionState.Path.CurrentLocation)

要将其缩减为当前目录名称,请将其更改为:

  • $($executionContext.SessionState.Path.CurrentLocation.Path.Split('\')[-1])

因此,要覆盖默认提示,请声明相同类型的函数:

function Prompt {
    "PS $($executionContext.SessionState.Path.CurrentLocation.Path.Split('\')[-1])$('>' * ($nestedPromptLevel +1)) "
}

要使自定义提示成为新会话的默认提示,请将函数定义添加到您的电源外壳个人资料。以下代码会将其添加到您现有的个人资料中,或者如果您没有个人资料,则会创建您的个人资料。

If (!(Test-Path -Path $PROFILE )) {
    New-Item -Type File -Path $PROFILE -Force | out-null }
@'
function Prompt {
    "PS $($executionContext.SessionState.Path.CurrentLocation.Path.Split('\')[-1])$('>' * ($nestedPromptLevel +1)) "
}
'@ | Add-Content -Path $PROFILE -Force

答案2

该命令prompt设置 Windows 终端的起始文本。其选项如下所示:

画家 说明
$q =(等号)
$$ $(美元符号)
$t 当前时间
$d 当前日期
$p 当前驱动器和路径
$v Windows 版本号
$n 当前驱动
>(大于号)
$l <(小于号)
$b | (管道符号)
$_ ENTER 换行
$e ANSI 转义代码(代码 27)
$h 退格键(删除已写入命令行的字符)
$a &(& 符号)
$c ((左括号)
$f ) (右括号)
$s 空间

从:https://docs.microsoft.com/de-de/windows-server/administration/windows-commands/prompt

如您所见,它没有列出任何将起始文本设置为当前文件夹的选项。要获得更多空间,您可以将其更改为仅显示类似“>”的内容,如下所示:

prompt $G

这个问题已经在以下帖子中回答过了:这里

相关内容