Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Scripts

Сила PowerShell, часть 2

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called The Power of PowerShell.
The Power of PowerShell, Part 1

Russian (Pусский) translation by Anna k.Ivanova (you can also view the original English article)

В первой части я показал вам некоторые интересные вещи, которые вы можете делать с PowerShell, рассмотрел историю PowerShell и подробно изучил возможности PowerShell как сильного языка сценариев, который поддерживает процедурное, функциональное и объектно-ориентированное программирование.

Во второй части я расскажу об интерактивной оболочке, профиле и подсказке и сравню PowerShell с Bash.

PowerShell: интерактивная оболочка

PowerShell был разработан с самого начала как интерактивная оболочка для системных администраторов Windows и опытных пользователей. Он фокусируется на небольшом числе концепций, очень согласованном опыте и конвейере объектов для объединения команд, их фильтрации и форматирования. Его сильную справочную систему, которая также придерживается единого формата, приятно использовать.

Давайте посмотрим её в действии.

Получаем помощь

Комплексная справочная система доступна через Get-Help.

Чтобы получить более подробную справку и увидеть примеры, используйте соответствующие ключи: -examples, -details или -full.

Если вы не уверены, как называется команда, просто используйте ключевые слова, и PowerShell покажет вам все доступные команды, которые содержат это ключевое слово. Давайте посмотрим, какие командлеты, связанные с CSV, доступны:

Я создал небольшой конвейер, в котором я ограничил вызов Get-Help только категорией Cmdlet, а затем передал его в «select» (псевдоним для Select-Object), чтобы получить только свойство «name».

Работа с файлами и каталогами

Вы можете делать практически все, к чему вы привыкли: переходить по различным каталогам, перечислять файлы и подкаталоги, просматривать содержимое файлов, создавать каталоги и файлы и т.д.

Работа с другими провайдерами

С PowerShell вы можете рассматривать многие вещи как файловые системы, перемещаться по ним с помощью cd и проверять их содержимое с помощью ls/dir. Вот несколько дополнительных провайдеров:

Давайте проверим среду и посмотрим, какие переменные среды, связанные с Go, существуют (на моей машине):

Форматирование

PowerShell рекомендует создавать командлеты со стандартными переключателями и создавать конвейеры. Форматирование - это явное понятие, когда в конце конвейера вы помещаете средство форматирования. PowerShell по умолчанию проверяет тип объекта или объектов в конце канала и применяет средство форматирования по умолчанию. Но вы можете переопределить его, указав форматер самостоятельно. Форматеры - это просто командлеты. Вот предыдущий вывод, отображаемый в виде списка:

Профиль

Опытные пользователи, которые используют командную строку, часто имеют много задач, конвейеров и любимых комбинаций команд с переключателями по умолчанию, которые они предпочитают. Профиль PowerShell - это файл сценария PowerShell, который загружается и выполняется при каждом запуске нового сеанса. Вы можете поместить все свои любимые вкусности, создать псевдонимы и функции, установить переменные среды и все остальное.

Мне нравится создавать псевдонимы навигации для глубоко вложенных каталогов, активировать виртуальные среды Python и создавать ярлыки для часто используемых внешних команд, таких как git и docker.

Для меня профиль незаменим, потому что очень удобочитаемые и согласованные команды и переключатели PowerShell часто слишком многословны, а встроенные псевдонимы часто доставляют больше хлопот, чем помощи (об этом я расскажу позже). Вот очень частичный фрагмент моего профиля:

Подсказка

PowerShell позволяет настроить командную строку. Вам нужно определить функцию с именем prompt(). Вы можете увидеть встроенную функцию подсказки:

Вот пользовательская функция приглашения, которая отображает текущее время в дополнение к текущему каталогу:

PS C:\Users\the_g> function prompt {"$(get-date) $(get-location) > "}

Конечно, вы можете сходить с ума, добавлять цвета и проверять различные условия, например, находитесь ли вы в определенном хранилище git или являетесь администратором.

Псевдонимы: Темная сторона

PowerShell неправильно использует псевдонимы, по моему мнению, на двух разных направлениях. Во-первых, команда alias разрешает только переименование команд. Вы не можете добавить общие флаги или параметры, чтобы сделать команды более полезными, добавив их в псевдонимы.

Например, если вы хотите искать в тексте построчно, вы можете использовать командлет Select-String:

Это работает, но многие люди хотели бы переименовать Select-String в grep. Но по умолчанию grep чувствителен к регистру, а Select-String - нет. Ничего страшного - мы просто добавим флаг -CaseSensitive, как в:

Set-Alias -Name grep -Value "Select-String -CaseSensitive"

К сожалению, это не работает:

Значением псевдонима должен быть командлет, функция, сценарий или программа. Флаги и аргументы не допускаются.

Теперь вы можете сделать это очень легко в PowerShell, но вам придется использовать функции, а не псевдонимы. Это в значительной степени ограничивает псевдонимы простым переименованием, что также может быть сделано функциями.

PowerShell vs. Bash

Что касается интерактивной оболочки, PowerShell и Bash довольно похожи. По умолчанию Bash более лаконичен, но объектный конвейер PowerShell делает сложные конвейеры более управляемыми. ,

Тем не менее, вы, вероятно, можете сделать что-нибудь с любым из них, и если вы опытный пользователь, то у вас будут собственные псевдонимы, функции и ярлыки для общих задач. Что касается сценариев, PowerShell выходит далеко за рамки Bash, а в целях системного администрирования даже превосходит Python, Ruby и прочих.

Важным аспектом является доступность. Bash поставляется с предустановленным большинством * nix-дистрибутивов (если не указано иное), включая macOS. Он также может быть установлен в Windows через cygwin, git-bash или msys. PowerShell поставляется с предустановленной операционной системой Windows и совсем недавно стала доступна для Mac и Linux.

Заключение

Если вы используете Windows в качестве компьютера для разработки или если вы управляете компьютерами Windows, PowerShell является незаменимым инструментом. Это действительно продуманное надмножество оболочек Unix, и он поставляется предварительно установленным.

PowerShell - отличная разработка программного обеспечения. Он развивался в течение десятилетия и продолжал вводить новшества, сохраняя при этом свою первоначальную концептуальную целостность. Недавний переход на открытый исходный код и кроссплатформенность сигнализирует о том, что еще есть чего ждать впереди.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.