繁体   English   中英

如何在powershell提示符中使用波浪号?

[英]How can I use tilde in the powershell prompt?

所以我明白了:

function global:prompt {
    # Commands go here
}

在powershell中设置提示。 我可以使用Get-Location来获取当前的工作目录。 我可以cd ~并在我的家里。

但我可以提示使用波浪号吗? 例如,如果我在/home/mike它应该只显示~

我试过测试:

$pwd -contains $home

但结果不正确。

如何在PowerShell的提示符中使用〜?

您可以替换$HOME~使用正常的字符串替换。 防爆。

获取当前的提示功能:

Get-Content Function:\prompt

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

然后更换$home~当电流路径是$home$home\\*

使用开关(可读):

function global:prompt {

    $path = switch -Wildcard ($executionContext.SessionState.Path.CurrentLocation.Path) {
        "$HOME" { "~" }
        "$HOME\*" { $executionContext.SessionState.Path.CurrentLocation.Path.Replace($HOME, "~") }
        default { $executionContext.SessionState.Path.CurrentLocation.Path }
    }

    "PS $path$('>' * ($nestedPromptLevel + 1)) ";
}

使用正则表达式(推荐):

function global:prompt {

    $regex = [regex]::Escape($HOME) + "(\\.*)*$"

    "PS $($executionContext.SessionState.Path.CurrentLocation.Path -replace $regex, '~$1')$('>' * ($nestedPromptLevel + 1)) ";

}

使用Split-Path (丑陋):

function global:prompt {

    $path = $executionContext.SessionState.Path.CurrentLocation.Path
    $p = $path

    while ($p -ne "") {
        if($p -eq $HOME) { $path = $path.Replace($HOME,"~"); break}
        $p = Split-Path $p
    }

    "PS $path$('>' * ($nestedPromptLevel + 1)) ";

}

演示:

PS C:\> cd ~

PS ~> cd .\Desktop

PS ~\Desktop>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM