当您在 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
这个问题已经在以下帖子中回答过了:这里