Работа с Powershell Linux

Компания Microsoft уже несколько лет развивает свободную версию командной оболочки PowerShell Core. Она использует открытый код, а её реализация, хоть и в урезанном виде, доступна и на Linux.

Мы рассмотрим особенности PowerShell, основные команды и способ установки. Это поможет определиться тем, кто хочет перейти с Windows на Linux, но при этом продолжить использование PowerShell. Скажем сразу, PowerShell не способна заменить Bash.

Что такое PowerShell?

PowerShell – это разработанная Microsoft оболочка командной строки и по совместительству сценарный язык. В Linux используется версия PowerShell Core с открытым кодом на основе .Net Core. Он имеет много общего с Bash, например, можно сохранять скрипты (в формате .ps1) и выстраивать конвейеры команд.

В Linux PowerShell не столь функционален, как в Windows. Во многом это связано с тем, что оболочка создавалась для администрирования операционной системы от Microsoft. Так что просто перенести скрипты на Linux не получится, в них наверняка есть обращения к реестру, планировщику и прочим программам, относящимся к Windows.

Также к особенностям PowerShell стоит отнести наличие алиасов у команд. Тем самым вы можете даже не заметить, но при использовании оболочки она будет задействовать собственные команды, практически не отличимые от родных команд. К слову, команды Bash также доступны в этой оболочке. Стоит отметить и то, что при удалённой работе через SSH PowerShell не даст использовать sudo.

jAAAAABJRU5ErkJggg==

В PowerShell при вызове pwd на самом деле исполняется get-location

Установка PowerShell в Linux

Несмотря на то, что PowerShell появился на Linux более пяти лет назад, его не спешат добавлять в репозитории. Он прописался в списках Альт, Arch, CentOS и Slackware. В остальных дистрибутивах лучше воспользоваться snap-пакетом.

Для установки PowerShell используйте команду:

sudo snap install powershell --classic

Вызвать оболочку можно командой:

pwsh

Работа с PowerShell в Linux

Давайте рассмотрим несколько основных команд PowerShell. Они не чувствительны к регистру, поэтому сложные команды запишем с использованием CamelCase.

  • $PSVersionTable – узнать версию оболочки;
  • get-command – вывести список доступных команд;
  • get-alias – вывести список алиасов;
  • set-alias -name имя_алиаса -value имя команды – создать алиас;
  • remove-item alias:имя_алиаса – удалить алиас в текущей сессии;
  • find-module – вывести список доступных модулей;
  • install-module имя_модуля – установить модуль;
  • get-help имя_команды – получить описание команды, её синтаксис и алиасы;
  • get-ChildItem – вывести содержимое папки;
  • new-item -ItemType directory -name 'имя_папки' – создать новую папку;
  • new-item имя_файла.abc – создать новый файл с расширением abc;
  • get_content имя_файла – вывести содержимое файла;
  • select_string -path имя_файла -pattern 'текст' – вывести имя файла, номер строки и содержимое строки, содержащее искомый текст.

Например, для того чтобы найти модуль bash выполните:

find-module bash

juthf80DS5CJwAAAABJRU5ErkJggg==

Модуль Bash относится к WSL, на Linux он бесполезен

Теперь рассмотрим get-СhildItem подробнее, с её помощью можно также искать файлы. Вот полезные параметры:

  • -path – указать путь;
  • -force – включить отображение скрытых файлов;
  • -recurse – поиск в подкаталогах;
  • -name – вывести только имена файлов;
  • -FollowSymLink – следовать по символическим ссылкам;
  • -include – имя должно содержать указанный текст. Например, -include ('*error*'+'*.log'), где '' ограничивают запрос, * указывает на позицию текста в имени, + (И) объединяет два условия, также можно использовать , (ИЛИ);
  • -exclude – исключает из выдачи файлы, содержащие указанный текст.

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

Выводы

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

Если же говорить о переносе скриптов из Windows, то корректно заработают лишь единичные образцы, всё же Windows во многих ситуациях обращается к собственным библиотекам и реестру. Также могут быть проблемы с тем, что оболочка использует алиасы и команды, перекрывающие родные команды Linux.

К плюсам PowerShell можно отнести лишь более понятные команды и синтаксис, но всё это перевешивают минусы. При использовании в Linux происходит путаница с командами, логика Bash (работа со строками) плохо сочетается с принципами PowerShell (работа с объектами), подключаемые модули написаны для Windows, да и в целом набор команд не позволит писать полноценные скрипты для Linux.

Оцените статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (7 оценок, среднее: 5,00 из 5)
Загрузка...

8 комментариев

  1. vladimir 11 марта, 2017 Ответить
  2. Nird 11 марта, 2017 Ответить
    • MICHAEL 18 февраля, 2019 Ответить
  3. Halyluya 11 марта, 2017 Ответить
  4. Tishka17 11 марта, 2017 Ответить
  5. proger 13 марта, 2017 Ответить
    • Василий 2 сентября, 2018 Ответить
  6. Виктор 2 ноября, 2021 Ответить

Ответить

 Для отправки комментариев необходимо принять политику конфиденциальности - политика конфиденциальности