kledgeb UbuntuやLinuxの最新情報を紹介

Windows その29 - Windows 向け Coreutils 登場・Coreutils のインストールやコマンドの一覧など

Windows 向け Coreutils 登場

Windows 向け Coreutils が登場しました。


  • Coreutils for Windows

Coreutils

Core Utilities は ls/cp/mv/rm コマンドなど、基本的なファイル操作やシェル操作、テキスト操作など、Linux の土台となる基本的なツールセットです。
お馴染みのコマンド群ですね。

最近 Ubuntu が Rust 版 Core Utilities に移行したこともあり、Core Utilities に関し記憶に新しい方も多いのではないでしょうか。

Windows 版 Core Utilities

その Core Utilities の Windows 版 が登場しました。
Windows でも Linux で使用しているコマンドとパイプラインをそのまま利用できます。

  • Coreutils for Windows

Windows 版 Core Utilities は Microsoft がメンテナンスしており、uutils coreutils や findutils、grep を Windows 向けに単一のマルチコールバイナリーとしてパッケージングしたものです。

  • uutils coreutils
  • findutils
  • grep

マルチコールバイナリーとは、単一のバイナリーで Core Utilities のコマンド群を実行する方式です。

なぜ作った?

Windows 版 Core Utilities は、Linux や macOS、WSL、コンテナーと Windows 間で、移行をスムーズに行えるようにするために作られました。

同じコマンド、フラグ、パイプラインが同じように動作するため、既存のスクリプトを変換せずとも、そのまま使用できます。

--help オプションのサポート

Windows 版 Core Utilities が提供する各コマンドは、完全な構文とオプションを表示する --help オプションをサポートしています。
使い方がよく分からなかったり、使い方を確認したい時は、--help オプションを活用すると良いでしょう。

DOS 版 コマンドの移植も含まれる

従来の DOS で提供されている sort と find コマンドの移植版も含まれており、/ スタイルのオプション構文に依存している既存の CMD スクリプトでも、UNIX スタイルのバージョンと並行してそのまま動作するようになっています。

PowerShell のバージョンについて

PowerShell を使用する場合、PowerShell 7.4 以降が必要です。
推奨バージョンは、~ の解釈がサポートされている PowerShell 7.6 以降のバージョンです。

コマンドの一覧

Windows 版 Core Utilities が提供しているコマンドの一覧です。
サポートしているコマンドと、サポートしていないコマンドがあります。

サポートしているコマンド一覧

Windows 版 Core Utilities でサポートしているコマンド一覧は、以下を参照してください。

  • Commands

サポートしていないコマンド

POSIX の仕組みに依存するコマンドや、既存の Windows スクリプトと非互換になるコマンド、Windows で実用性のないコマンドは、搭載されていません。
サポートされていないコマンドの一覧は、以下を参照してください。

  • Intentionally dropped

Coreutils をインストールするには

Coreutils をインストールする方法です。

WinGet でインストール

Coreutils のインストールは、WinGet(Windows Package Manager)を使う方法が最も簡単です。

  • WinGet

ターミナルから以下のコマンドを実行します。

winget install Microsoft.Coreutils

以上でインストールは完了です。

GitHub から直接ダウンロードも可能

他の方法としては、GitHub から直接ダウンロードする方法もあります。

  • Coreutils for Windows

エイリアスを作るには

コマンドのエイリアスを作る方法です。
コマンドのエイリアスを作ると、よく利用するコマンドやオプション付きコマンドを簡単に呼び出せるようになります。

PowerShell

PowerShell でエイリアスを作成する方法です。
Set-Alias を使用する場合、以下のようにエイリアスを作成します。

Set-Alias ll 'ls'

オプション付きコマンドのエイリアスを作成したい場合は、$PROFILE に以下のように関数を定義してください。

function ll { ls -la --color=auto @args }

注意

PowerShell のエイリアス機能を使う場合、バイナリストリームの互換性で問題が発生する可能性があります。
その場合 xargs や find など、パイプ処理が正常に動かないケースが発生します。

CMD

CMD でエイリアスを作成する方法です。
doskey で以下のようにエイリアスを作成します。

doskey ll=ls -la $*

コマンドの衝突について

Windows 版 Core Utilitiesが提供するコマンドと、CMD や PowerShell が内蔵しているコマンドの一部が同じ名称のコマンドであり、これらのコマンドが衝突します。

どのコマンドが実行されるのか

衝突するコマンドを実行した場合、シェルの種類や $PATH で指定されたパスの順番、そして PowerShell ではこれらに加えエイリアステーブルの状況により、実行されるコマンドが決定されます。

衝突するコマンドの一覧

衝突するコマンドの一覧は、以下を参照してください。

  • Shell conflicts

Windows 固有の注意点

Windows 固有の注意点です。

CRLF 改行コード

歴史的に Windows ではテキストファイルの改行コードに CRLF(\r\n)が採用されてきました。
その一方で Linux では、LF が採用されてきました。

多くのコマンドはこの違いを透過的に処理できますが、バイト単位の処理では \r が影響する場合があります。
例えば uniq コマンドは、改行コードが CRLF かつ最後の行に改行がない場合、直前の重複行と異なると判断することがあります。

/dev/null の代替

Windows に /dev/null はありません。
Windows では /dev/null の代わりに、NUL を使用してください。
例えば以下のように記述します。

find . -name "*.log" > NUL

POSIX シグナルがない

SIGHUP や SIGPIPE、SIGUSR といった POSIX シグナルは利用できません。
ただし Ctrl+C(SIGINT)は、想定通りに動作します。

パスの区切り文字

パスの区切り文字に /(Linux)と \(Windows)を利用できます。
ただ一部のコマンドは / 区切りで結果を出力します。
そのためこのようなコマンドでは、後に続くパイプ処理で何かしら影響が出る可能性があります。

ファイルのパーミッション

Windows はファイルのパーミッション管理に ACL を利用しており、POSIX のパーミッション管理とは異なる仕組みを採用しています。
そのため find -perm のようなパーミッションに依存する処理は動作結果が異なったり、利用できない場合があります。

シンボリックリンク

既存リンクの読み取りは、管理者権限がなくても読み取り可能です。
リンクの新規作成には開発者モードもしくは管理者権限のターミナルが必要です。

開発者モードの設定方法は、以下を参照してください。

  • Windows の詳細設定

PowerShell 利用時の留意点

対話型 PowerShell セッションでは PSReadLine を利用しており、UNIX シェルもしくは CMD と似たような振る舞いをするように調整されています。
ただしいくつか制限があります。

クォートされた式の扱いについて

クォートされた式の扱いが UNIX シェルもしくは CMD と似たような振る舞いをするように調整されています。
例えば echo *.txt は条件に合う複数のファイル名を出力し、echo '*.txt' はそのまま *.txt を出力します。

エスケープ文字の制限

PowerShell のエスケープ文字は`(バッククォート)であり、\(バックスラッシュ)ではありません。

そのため Bash で以下のように記述する場合、

find . \( -foo -bar \)

PowerShell では以下のように書く必要があります。

find . `( -foo -bar `)

エイリアスの制限

PowerShell が定義しているエリアスは無視されません。
例えば Get-Command ls や Get-Help ls は、PowerShell の内蔵コマンドもしくはエイリアスが参照されます。

Windows
スポンサー
コメント
コメントポリシー
コメントをする前に UbuntuのCode of Conduct(CoC/行動規範) を確認し、CoCに沿ったコメントをお願いします。
コメントの使い方は、コメントの使い方を参照してください。
同一カテゴリーの記事
SNS
人気の記事
  • Ubuntu 26.04 その68 - Ubuntu 26.04.1 LTS がリリースされました・ディスクイメージのダウンロード
    Ubuntu 26.04.1 LTS リリース 2026年8月27日、Ubuntu 26.04.1 LTS がリリースされました。
  • Ubuntu 26.04 その42 - Ubuntu 26.04.1 LTS のリリーススケジュール
    Ubuntu 26.04.1 LTSのリリーススケジュール Ubuntu 26.04.1 LTS のリリーススケジュールを紹介します。
  • Ubuntu 24.04 その96 - Ubuntu 24.04.5 LTS のリリース日変更
    Ubuntu 24.04.5 LTS のリリース日変更 Ubuntu 24.04.5 LTS のリリース日が変更されました。
  • Linux その426 - GNOME 向けアプリとアップデートの紹介・AI アシスタントアプリやメールスイートなど
    GNOME 向けアプリとアップデートの紹介 GNOME 向けアプリとアップデートの紹介です。
  • Linux その429 - GNOME 向けアプリとアップデートの紹介・ RSS リーダーのインポート機能や映画マトリックスのデスクトップ効果など
    GNOME 向けアプリとアップデートの紹介 GNOME 向けアプリとアップデートの紹介です。
  • Ubuntu 18.04 その195 - PolicyKitにクラッシュや権限の昇格など複数の脆弱性・今すぐアップデートを
    PolicyKitの脆弱性 2018年7月16日、クラッシュや権限の昇格など複数の脆弱性に対応した「PolicyKit」がリリースされました。
  • Ubuntu 26.10 その24 - Ubuntu 26.10 の公式壁紙と壁紙コンペの結果発表
    Ubuntu 26.10 の公式壁紙と壁紙コンペの結果発表 Ubuntu 26.10 の公式壁紙と壁紙コンペの結果が発表されました。
  • Linux その428 - KDE Plasma で実装予定の新機能や改善・マウスの中央ボタンの機能改善やリモートデスクトップの改善など
    KDE Plasma で実装予定の新機能や改善 KDE Plasma で実装予定の新機能や改善を紹介します。
  • Linux Mint その292 - Linux kernel 7.0 採用の Linux Mint 22.3 リリース・システム管理ツールにカーネル管理機能追加など
    Linux Mint 月刊ニュース Linux Mint 開発チームは Linux Mint 月刊ニュースにて、Linux Mint の開発状況や取り組みを紹介しています。
  • Ubuntu Cinnamon その14 - Cinnamon Spices がダウンロードできない不具合の修正
    Cinnamon Spices がダウンロードできない不具合の修正 Ubuntu Cinnamon 26.04.1 LTS で Cinnamon Spices がダウンロードできない不具合が修正されました。
記事のピックアップ
オプション