Категория > Новости > Используй силу, Тукс! Применяем PowerShell в Linux - «Новости»

Используй силу, Тукс! Применяем PowerShell в Linux - «Новости»


10-06-2022, 00:00. Автор: Трофим
ре­пози­торий на GitHub). Обо­лоч­ка, исполь­зующая .NET Core, ста­ла кросс‑плат­формен­ной, с ней мож­но работать в раз­личных дис­три­бути­вах Linux (Debian, Ubuntu, CentOS, Red Hat, openSUSE, Fedora) и в macOS.


Вна­чале кросс‑плат­формен­ная вер­сия обо­лоч­ки называ­лась PowerShell Core 6, что­бы явно ука­зать ее зависи­мость от .NET Core. Начиная с седь­мой вер­сии сло­во Core из наз­вания убра­ли, теперь обо­лоч­ка носит имя прос­то PowerShell. Вер­сия обо­лоч­ки, базиру­ющаяся на пол­ной плат­форме Windows .NET Framework, называ­ется Windows PowerShell.


 

Установка и запуск


Ус­танов­ка PowerShell зависит от типа опе­раци­онной сис­темы и ее вер­сии, соот­ветс­тву­ющие инс­трук­ции име­ются на сай­те Microsoft. Нап­ример, для уста­нов­ки PowerShell в опе­раци­онной сис­теме Linux Ubuntu 20.04 нуж­но выпол­нить сле­дующие коман­ды:


sudo apt-get update
sudo apt-get install -ywget apt-transport-https software-properties-common
wget -qhttps://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb
sudo dpkg -ipackages-microsoft-prod.deb
sudo apt-get update
sudo add-apt-repository universe
sudo apt-get install -ypowershell

Что­бы запус­тить уста­нов­ленную обо­лоч­ку PowerShell, выпол­ним в тер­минале коман­ду pwsh. Пос­ле вывода информа­ции о вер­сии PowerShell мы получим обыч­ное приг­лашение коман­дной стро­ки с путем к текуще­му катало­гу в качес­тве пре­фик­са.


PowerShell в Linux 

PowerShell как командная оболочка


Для эффектив­ной и удоб­ной работы в коман­дной стро­ке важ­ны два момен­та.



  1. Нуж­но знать наз­вания команд и их клю­чей. Запом­нить их будет про­ще, если син­таксис команд инту­итив­но понятен и одно­роден. Если мы не пом­ним клю­чи у коман­ды, то дол­жна быть воз­можность быс­тро най­ти справ­ку по этой коман­де и при­меры ее исполь­зования.

  2. Са­ми коман­ды и их клю­чи дол­жны быть крат­кими и удоб­ными для быс­тро­го набора на кла­виату­ре. Обо­лоч­ка дол­жна под­держи­вать механиз­мы авто­допол­нения, поис­ка и пов­тора выпол­нявших­ся ранее команд.


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


 

Структура команд и псевдонимы


В PowerShell име­на всех внут­ренних команд соот­ветс­тву­ют шаб­лону «дей­ствие‑объ­ект», нап­ример Get-Process (получить информа­цию о про­цес­се), Get-Content (получить содер­жимое фай­ла), Clear-Host (очис­тить экран). Для оди­нако­вых парамет­ров команд исполь­зуют­ся стан­дар­тные име­на, струк­тура парамет­ров во всех коман­дах иден­тична, все коман­ды обра­баты­вают­ся одним син­такси­чес­ким ана­лиза­тором. Это дела­ет семан­тику команд оче­вид­ной и зна­читель­но упро­щает запоми­нание и исполь­зование команд PowerShell.


С дру­гой сто­роны, иног­да PowerShell руга­ют имен­но за этот мно­гос­ловный и необыч­ный для дру­гих обо­лочек син­таксис. Нап­ример, нам нуж­но соз­дать в текущем катало­ге пус­той файл 1.txt. В Bash это дела­ется коман­дой touch из пяти букв:


~ touch 1.txt

При соз­дании фай­ла в PowerShell с помощью коман­ды New-Item с парамет­рами пот­ребу­ется ввес­ти боль­ше двад­цати сим­волов.


Соз­дание фай­ла 1.txt c помощью коман­ды New-Item

Выг­лядит ужас­но, прав­да? Но того же резуль­тата мож­но добить­ся, наб­рав коман­ду ni все­го из двух сим­волов.


Соз­дание фай­ла 2.txt c помощью коман­ды ni

Ко­ман­да ni — это стан­дар­тный псев­доним для New-Item (сок­ращение по пер­вым бук­вам слов коман­ды), зна­чение File для парамет­ра -Type исполь­зует­ся по умол­чанию, имя парамет­ра -Path мож­но опус­тить.


Та­ким обра­зом, стан­дар­тные псев­донимы PowerShell, пол­ный спи­сок которых мож­но получить с помощью коман­ды Get-Alias, помога­ют быс­тро вво­дить коман­ды и соз­давать ком­пак­тные и лаконич­ные кон­вей­еры из нес­коль­ких команд.


По­луче­ние пол­ного спис­ка псев­донимов c помощью коман­ды Get-Alias

От­метим, что в Windows PowerShell за некото­рыми коман­дле­тами зак­репле­ны псев­донимы, соот­ветс­тву­ющие стан­дар­тным коман­дам Unix-подоб­ных сис­тем: ls, rm, cp, mv, cat, ps, man, mount. В PowerShell 6/7 дан­ные псев­донимы не опре­деле­ны, их ввод при­ведет к выпол­нению «род­ных» команд Linux.


 

Доступность команд


В .NET Core/.NET 5 реали­зова­на не вся фун­кци­ональ­ность плат­формы .NET Framework, поэто­му в PowerShell 6/7 по умол­чанию заг­ружа­ется мень­ше модулей и будет дос­тупно мень­ше команд, чем в Windows PowerShell. Нап­ример, под Linux недос­тупны коман­ды *-Service, *-Acl, *-Event, Set-ExecutionPolicy.


Часть из отсутс­тву­ющих модулей нап­рямую свя­заны с осо­бен­ностя­ми опе­раци­онной сис­темы Windows и не могут быть перене­сены на дру­гие плат­формы (так, в PowerShell для Linux отсутс­тву­ют про­вай­деры и вир­туаль­ные дис­ки для сис­темно­го реес­тра и хра­нили­ща сер­тифика­тов), некото­рые модули могут быть добав­лены в сле­дующих вер­сиях PowerShell.


При работе с PowerShell в Linux необ­ходимо учи­тывать осо­бен­ности опе­раци­онной сис­темы.



Перейти обратно к новости