🪟

WindowsにUNIX系ツールをインストールする方法

2023/05/29に公開

はじめに

この記事では、Windows 環境で使用できるUNIX系ツールのインストール方法を紹介します。

less,grepなどLinux環境でよく使われているツールは、Windows にも移植されています。
これらのUNIX系ツールを Windows にインストールすることで、Linuxと同様の操作ができるようになり、コンソール操作の効率が向上します。

1. UNIX系ツールとは

ここでは、shbashなどのシェルやCoreutilsなどのツールを示しています。

Windows 10/11では標準でPowerShellが使用でき、エイリアスでrmlsのような UNIX コマンドも使用できます。
ただし、オプションはPowerShellのままなので注意が必要です。

Windows 上でも、BusyBoxCoreutilsといった UNIX系ツールのパッケージをインストールすることで、Linuxと同様の操作が可能になります。

1.1. BusyBox

BusyBox は、Linux環境で使用するシェルと主要コマンドをまとめて1つのパッケージにしたプログラムです。
shbashといったシェルも含まれているため、シェルの代わりにもなります。
BusyBoxをインストールすると、Windows 上でもシェルを含む Linux 環境の一文が提供されます。

BusyBoxにはlsコマンドのほか、rmcatなど、多数のコマンドが含まれています。これらのコマンドは、BusyBoxのサブコマンドとして呼び出せるほか、それぞれ独立したコマンドとしても機能します。
BusyBox内のそれぞれのコマンドを実行するには、シンボリックリンクを利用してそれぞれのコマンド名でBusyBoxを呼びだす必要があります。

たとえば、lsというコマンド名でBusyBoxを呼びだすとBusyBoxlsと同様の動作をします。
また、rmというコマンド名でBusyBoxを呼びだすと、BusyBoxrmと同様の動作をします。

busybox ls .    # `ls .`と同様の動作
ls .            # シンボリックリンクにより、busyboxがを実行される。動作は busyboxが`ls .`を実行する

1.2. Coreutils

Coreutils(GNU Core Utilities)は、ls,catなどのUNIX/LinuxOSで基本的なコマンドをまとめて提供しているパッケージです。
BusyBox はパッケージの中でも主要なコマンドだけを提供していますが、Coreutils はより多くのコマンドを提供しています。

1.3. less (ページャー)

less はファイルの内容を画面に表示するページャーの一種です。
Linux環境でよく使用されるため、インストールしておくと便利です。

1.4. grep (検索ツール)

grep (GNU grep)は、ファイル内に特定のパターンのテキストが存在するかをチェックする検索ツールです。
Linux ディストリビューションとの互換性を考慮してインストールします。

1.5. tree

tree は、ファイルやディレクトリをツリー表示するコマンドです。
Windows にも tree コマンドがありますが、Linux に移植されたバージョンのほうが機能豊富です。
機能の豊富さのために、Linux版のtreeコマンドをインストールします。

2. UNIX系ツールのインストール

2.1. 前提環境

ディレクトリ構成

Windows 側は、以下のディレクトリ構成です。

c:\
 |-- app
 |   |-- develop   # 開発ツール
 |   |-- launnch   # アプリショートカット用
 |   \-- scoop     # Scoop Global (app,shimsなどのScoop用サブディレクトリあり)
 |
 \-- bin
     |-- Wz        # Wzエディタ
     |-- init      # 初期化用
     |-- neovim    # NeoVIM エディタ
     |-- scripts   # 各種スクリプト
     `-- tools     # UNIX系ツール、コマンドラインツール

Scoop を使ってインストールしたコマンドは、自動的に"c:\app\scoop"下の適切なディレクトリに配置されます。
そのほかのコマンドは、Windows のコマンドライン用コマンドを配置するディレクトリc:\bin\tools下にインストールします。

環境変数Path

ディレクトリ構成に従い、Pathを設定しておきます。
Path は、以下のようになります。

c:\bin;C:\bin\scripts;c:\bin\tools;c:\bin\wz;C:\bin\neovim\bin;C:\app\develop\ide\VSCode\bin;c:\app;c:\app\launch;C:\app\scoop\shims;C:\app\develop\scm\github\gitlfs;C:\app\develop\scm\github\cli\;...

両方とも Windows の環境変数PATHに登録しているので、コンソールを起動すればすぐに UNIX系コマンドが使えます。

ターミナル (管理者)

どのコマンドも全ユーザー用にインストールするため、管理者権限でターミナルを開いてください。
Terminal(Admin)

2.2. BusyBoxのインストール

BusyBoxScoopでインストールできます。
次の手順で、BusyBoxをインストールします。

  1. BusyBoxをインストールする

    terminal
    scoop install busybox --global
    

これにより、BusyBox のインストールは終了です。

2.3. CoreUtilsのインストール

Scoop には、通常のcoreutilsRust製のuutilsがあります。
今回は、Rust製のため高速なuutilsをインストールします。

  1. coreutilsをインストールする

    terminal
    scoop install uutils-coreutils --global
    

これにより、Core Utilsのインストールは終了です。

2.4. less, grep のインストール

less,grepともScoopでインストールできます。
次の手順で、less,grepをインストールします。

  1. lessをインストールする

    terminal
    scoop install less --global
    
  2. grepをインストールする

    terminal
    scoop install grep --global
    

これにより、less,grepのインストールは終了です。

2.5. treeのインストール

treeScoopではインストールできないてめ、手動でパッケージをダウンロードしてインストールします。
次の手順で、'tree'をインストールします。

  1. Tree for Windowsにアクセスする
    Tree for Windows

  2. Binariesのリンクをクリックし、アーカイブをダウンロードする

  3. ダウンロードしたアーカイブを展開する

  4. 展開して出てきた"tree.exe"を"c:\bin\tools"にコピーする

    terminal
    cp .\tree-1.5.2.2-bin\bin\tree.exe c:\bin\tools\
    
    

これにより、treeのインストールは終了です。

さいごに

以上が Windows に UNIX系のツールをインストールする方法の紹介となります。
UNIX系ツールを使うことにより、Windows上でも柔軟な操作が可能になります。

さらに必要なツールがある場合は、wingetScoopなどのパッケージマネージャーから簡単にインストールが可能です。

それでは、Happy Hacking!

技術用語と注釈

  • UNIX系ツール: UNIX/Linux下で使用されるコマンドラインツール。簡単なコマンド(ls,mvなど)から、複雑なコマンド(lessなど)も含む
  • Scoop: Windows 用のパッケージマネージャー。オープンソースのツールが充実している
  • PATH: システムがコマンドを探索するディレクトリのリストを格納した環境変数。コマンドが Path上のディレクトリに含まれていれば、ユーザーはそのコマンドを任意の場所から実行できる

参考資料

ツール関連

  1. GNU core utilities: https://www.gnu.org/software/coreutils/
  2. uutils coreutils: https://github.com/uutils/coreutils
  3. Busybox for Windows: https://frippery.org/busybox/
  4. less: https://www.greenwoodsoftware.com/less/
  5. GNU grep: https://www.gnu.org/software/grep/
  6. Tree for Linux: http://mama.indstate.edu/users/ice/tree/
  7. Tree for Windows: https://gnuwin32.sourceforge.net/packages/tree.htm

パッケージマネージャー

  1. Scoop: https://scoop.sh/
  2. winget (Windows Package Manager): https://github.com/Microsoft/winget-cli
GitHubで編集を提案

Discussion