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

标签 powershell command-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>

关于powershell - 如何在 powershell 提示符中使用波浪号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39186373/

相关文章:

java - 仅使用命令提示符启动 Jetty 8 服务器

python - 如何使用 python fabric 自动回答提示?

c# - 从 C# 在 powershell 中运行 AD 命令行开关时出错

PowerShell:切片和切 block 制表符分隔文件

c# 远程 powershell 创建 AD/Exchange 用户帐户并修改

mysql - SELECT 字段 GROUP BY max(field) 和 GROUP BY 其他字段 MySQL

powershell - 如何在没有终端窗口的情况下运行PowerShell脚本?

json - 遍历 JSON 文件 PowerShell

windows - 在 Windows 中查找 USB 以太网链路本地 IP 地址

unix - 将终端选项卡标题设置为 unix 中的提示名称