簡體   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