Наконец, новая версия PowerShell была выпущена примерно через три года после выхода PowerShell Core 6. Многие поклонники PowerShell ждали последней версии, в том числе и я. Новый PowerShell 7 сводит к минимуму разрыв между Windows PowerShell 5 и кроссплатформенной версией PowerShell Core 6. Кроме того, в последнюю версию добавлены более мощные функции.
Я хочу поделиться некоторыми советами тем, кто хочет настроить среду PowerShell более мощной, но в то же время дружелюбной.
о-о-о-о-о
Вдохновленный oh-my-zsh, oh-my-posh привносит мощные индикаторы консоли и функции в ваш сеанс PowerShell.
В PowerShell Core 6 PSReadLine не был встроенным модулем. Поэтому перед установкой oh-my-posh вы должны сначала установить модуль PSReadLine. Этот дополнительный шаг делает несколько громоздким. Но в PowerShell 7 PSReadLine включал дистрибутив по умолчанию, так что вы можете просто настроить oh-my-posh напрямую.
Вы можете запустить эти команды, чтобы настроить oh-my-posh для PowerShell.
Install-Module posh-git -Scope CurrentUser Install-Module oh-my-posh -Scope CurrentUser
Затем включите подсказку и измените тему.
Set-Prompt Set-Theme Paradox
Примечание. Шрифт терминала по умолчанию может некорректно отображать символы Powerline в первый раз. Поищите в репозитории https://github.com/ryanoasis/nerd-fonts и выберите свой любимый исправленный шрифт Powerline. Кроме того, если вы ищете сбалансированный шрифт CJK, рассмотрите возможность использования шрифта D2Coding (https://github.com/naver/d2codingfont) от Naver.
Затем откройте сценарий профиля PowerShell с помощью команды vim $PROFILE
и вставьте приведенные ниже коды.
Import-Module posh-git Import-Module oh-my-posh Set-Theme Paradox
Этот код делает вашу оболочку PowerShell по умолчанию более улучшенной. Вы можете изменить тему на то, что хотите.
Модуль PSFzf
Как вы, возможно, знаете, fzf предоставляет мощные функции поиска для многих сценариев. Особенно хорош fzf в сочетании с поиском по истории и привязкой клавиш с комбинацией клавиш Ctrl + R
.
PSFzf точно соответствует этому сценарию. Кроме того, fzf написал на Голанге. Таким образом, вы можете использовать fzf в macOS, Linux и даже в Windows.
Чтобы использовать модуль PSFzf, вы должны сначала установить fzf на свой компьютер.
- В Windows вы можете выбрать между диспетчером пакетов Chocolatey или диспетчером пакетов Scoop.
- В Linux большинство диспетчеров пакетов предоставляет пакет fzf. (За исключением того, что Ubuntu не предлагает этот пакет. В качестве альтернативы вы можете использовать метод установки Git.)
- В macOS Homebrew - ваш лучший друг.
После того, как вы установили двоичный файл fzf, просто установите модуль PSFzf в свой PowerShell.
Install-Module PSFzf -Scope CurrentUser
Наконец, позвольте PSFzf переопределить привязку клавиш по умолчанию при запуске. Вставьте приведенные ниже коды.
Remove-PSReadlineKeyHandler 'Ctrl+r' Remove-PSReadlineKeyHandler 'Ctrl+t' Import-Module PSFzf
Версия k, kubectx и kubens для PowerShell
Если вы придерживаетесь Kubernetes каждый день, вы можете знать или учитывать сокращенное выражение kubectl.
Я использую псевдонимы K
, kubectx
и kubens
каждый день. Но эти скрипты не предназначены для PowerShell. Поэтому я попытался сделать собственную версию каждого условного обозначения. Естественно, вы можете использовать приведенные ниже фрагменты кода для других ваших сред, включая Windows.
Псевдоним "K"
Set-Alias k kubectl
«Select-KubeContext» (он же kubectx)
function global:Select-KubeContext { [CmdletBinding()] [Alias('kubectx')] param ( [parameter(Mandatory=$False,Position=0,ValueFromRemainingArguments=$True)] [Object[]] $Arguments ) begin { if ($Arguments.Length -gt 0) { $ctx = & kubectl config get-contexts -o=name | fzf -q @Arguments } else { $ctx = & kubectl config get-contexts -o=name | fzf } } process { if ($ctx -ne '') { & kubectl config use-context $ctx } } }
«Select-KubeNamespace» (он же кубенс)
function global:Select-KubeNamespace { [CmdletBinding()] [Alias('kubens')] param ( [parameter(Mandatory=$False,Position=0,ValueFromRemainingArguments=$True)] [Object[]] $Arguments ) begin { if ($Arguments.Length -gt 0) { $ns = & kubectl get namespace -o=name | fzf -q @Arguments } else { $ns = & kubectl get namespace -o=name | fzf } } process { if ($ns -ne '') { $ns = $ns -replace '^namespace/' & kubectl config set-context --current --namespace=$ns } } }
Вставьте эти коды в свой $PROFILE
код скрипта, и вы получите более удобное рабочее пространство PowerShell для DevOps.
Заключение
Я думаю, что настоящая сила PowerShell в том, что вы можете написать код автоматизации оболочки, более читаемый, управляемый и многоразовый для любой операционной системы, включая Windows. Это означает, что больше не нужно рассматривать крайний случай. Вы можете просто написать свой фрагмент PowerShell один раз и поделиться кодом повсюду.
В следующей версии PowerShell появится все больше и больше функций. Я не могу этого дождаться!