как заставить powershell сократить длинный каталог перед ">" - PullRequest
0 голосов
/ 19 мая 2018
Например,

, если я задаю псевдоним в файле profile.ps1

$ws='C:\Users\Jack\folder0\folder1\folder2'

После того, как я перейду к месту расположения рабочей области cd $ws

Это будет показано ниже

PS C:\Users\Jack\folder0\folder1\folder2\>

Теперь мне интересно, есть ли способ показать это, как показано ниже или аналогично

PS $ws>

Я впервые задаю вопросы о StackOverflow.если что-то не подходит, дайте мне совет.

1 Ответ

0 голосов
/ 19 мая 2018

Вы можете изменить функцию подсказки, чтобы сделать все, что вы хотите.Если вы хотите проверить только одну переменную, вы можете сделать это:

$ws = "c:\users\frode"

function prompt {
    $CurrentLocation = $executionContext.SessionState.Path.CurrentLocation.Path
    if($CurrentLocation -like "$ws*") {
        $CurrentLocation = $CurrentLocation -replace [regex]::Escape($ws), '$ws'
    }

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

Вывод:

PS C:\Users> cd .\frode

PS $ws> cd .\Desktop

PS $ws\Desktop> 

Если вам нужно поддерживать несколько переменных, вы можете сохранить пути вhashtable и проверьте это или используйте Get-Variable для поиска переменных, содержащих допустимый путь.Не забудьте исключить ex $PWD, который всегда является вашим текущим местоположением.

...