LoginSignup
5
6

More than 3 years have passed since last update.

PowerShellをLinuxにインストールして試す

Posted at

普段UbuntuやCentOSのシェル環境はbashかzshでの作業が多い私ですが、PowerShellのスクリプトを業務で触ることもありますので、Linuxの作業環境にPowerShellを入れて触ってみました。

インストール

先日リリースされたばかりのPowerShell 7.0.0です。

インストール手順は公式ドキュメントを見るとわかります。

Installing PowerShell on Linux - PowerShell | Microsoft Docs
https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-linux?view=powershell-7

Release v7.0.0 Release of PowerShell · PowerShell/PowerShell
https://github.com/PowerShell/PowerShell/releases/tag/v7.0.0

以下の手順でインストールしました。

$ mkdir powershell
$ cd powershell
$ wget https://github.com/PowerShell/PowerShell/releases/download/v7.0.0/powershell-7.0.0-linux-x64.tar.gz
$ tar xvzf powershell-7.0.0-linux-x64.tar.gz

binのようなディレクトリがなく、直下に実行バイナリが現れます。このディレクトリを直接PATHに入れるのも気持ち悪いので、PATHの通った汎用のbinにシンボリックリンクを作成しました。こんな感じ。

$ ln -s $HOME/powershell/pwsh $HOME/bin/pwsh

以下で実行できます。

$ pwsh

所感

ほとんどPowerShellを触ったことのない私の感想です。

Linux上のコマンドとの混在とパイプについて

Linux上のコマンドはPowerShellからでも普通に呼び出せます。

> ls | less

lsはPowerShellではGet-ChildItemというPowerShellのコマンドのエイリアスであって、Linuxのlsとは違うと聞いてたのですが、LinuxのPowerShellでのlsはLinuxのlsが実行されるようです。Windowsとは違うのかもしれません。

PowerShellのコマンドとLinuxコマンドの混在もできるようです。

> Get-ChildItem | less
> Get-ChildItem | grep foo

PowerShellのパイプは、Linuxのパイプと違ってテキストやバイナリが流れるのではなく、オブジェクトが流れるので、 ls | grep xxx は次のように書けるようです。

> Get-ChildItem | Where-Object { $_.Name -like "*foo*" }

Where-Object はフィルタリングするもので、{ ... } は関数みたいなもので、 $_ は引数か。

この例での $_.Name のような、 Get-ChildItem から流れてくるオブジェクトにどんなプロパティやメソッドがあるかを調べるには Get-Member というのを使う。

> Get-ChildItem | Get-Member

ワンライナー

bashやzshなどからPowerShellをワンライナーとしても使えます。 -c というオプションを使います。

$ pwsh -c 'Get-ChildItem | Where-Object { $_.Name -like "*foo*" }'

コマンド履歴

コマンド履歴の保存されているファイル(.zsh_historyなどに相当するファイル)は $HOME/.local/share/powershell/PSReadLine/ConsoleHost_history.txt です。

以上。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6