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
人気の記事
  • Linux その450 - Canonical LXD や MicroCloud にクライアントなりすましの脆弱性・アップデートを
    Canonical LXD や MicroCloud に重大な脆弱性 2026年10月28日、Canonical LXD や MicroCloud に重大な脆弱性がみつかりました。
  • Ubuntu 26.04 その82 - Linux kernel の脆弱性 CVE-2026-98432 の対応状況
    CVE-2026-98432 の対応状況 2026年11月2日、Linux kernel の脆弱性である CVE-2026-98432 の対応状況がアナウンスされました。
  • Linux Mint その294 - Linux Mint 27 の開発とリリース方針の変更・アラーム管理アプリの開発
    Linux Mint 月刊ニュース Linux Mint 開発チームは Linux Mint 月刊ニュースにて、Linux Mint の開発状況や取り組みを紹介しています。
  • Ubuntu 26.04 その76 - CVE-2026-92392 含む curl の脆弱性22件修正・アップデートを
    curl の脆弱性22件修正 CVE-2026-92392 含む22件の curl の脆弱性に対応したセキュリティーアップデートがリリースされました。
  • Ubuntu 26.10 その38 - Ubuntu 26.10 がリリースされました・ディスクイメージのダウンロード
    Ubuntu 26.10 リリース 2026年10月15日、Ubuntu 26.10 がリリースされました。
  • Ubuntu 26.04 その79 - CVE-2026-111497 に対応した Brotli のリリース・アップデートを
    Brotli のセキュリティーアップデート 2026年10月26日、CVE-2026-111497 に対応した Brotli がリリースされました。
  • Ubuntu 26.04 その78 - eMudhra 認証局の秘密鍵の侵害・アップデートを
    eMudhra 認証局の秘密鍵の侵害 2026年10月20日、eMudhra 認証局(eMudhra CA)の秘密鍵の侵害が発覚しました。
  • Ubuntu 26.10 その39 - Ubuntu 26.10 の新機能と変更点・既知の問題
    Ubuntu 26.10 の新機能と変更点・既知の問題 リリースノートから、Ubuntu 26.10 の新機能と変更点を紹介します。
  • Ubuntu 26.04 その77 - PHP に php2shell(CVE-2026-109618/CVE-2026-109619)の脆弱性・アップデートを
    PHP に php2shell の脆弱性 PHP に php2shell と呼ばれる致命的な脆弱性が見つかりました。
  • Ubuntu 26.04 その80 - Ubuntu 26.04.2 LTS のリリーススケジュール
    Ubuntu 26.04.2 LTSのリリーススケジュール Ubuntu 26.04.2 LTS のリリーススケジュールを紹介します。
記事のピックアップ
オプション