Win::Win側からUbuntuコマンドが便利
#2025/3/17
#2020/6/20 での記事:WSL:: UbuntuからWindowsコマンドが実行できる!
では,Ubuntu側からWinコマンドを呼び出すのは大した用事はないと言ったが…….
その逆はとてもとても便利な使い方がいろいろ考えられる.
基本は DOS窓またはPowerShellターミナル上でのコマンドライン操作.
Windows側からパイプが使えるので,標準出力するフィルタ系のコマンド:sort, head, tail, wc, grep, sed, awk, etc..... を,win shellから呼び出して処理できるのがものすごく便利!
参照:Windows 10のコマンドプロンプトからWSL上のLinuxコマンドを呼び出す(バージョン1803対応版):Tech TIPS - @IT
◎スタイル(1):<windows シェルコマンド> | wsl <Unix コマンド>
例:「dirコマンドで表示されるリストからディレクトリの数を数える」
dir |wsl grep '^d' | wsl wc -l ← PowerShell版
↑↑ のdirコマンドはPowerShellのdir. ← 実体はPowerShellの 'Get-ChildItem' コマンドレット.Unixの 'ls' コマンドに似た出力になる.いわゆるDOS窓の dir コマンドだと ↓↓ のようにすると同じ出力になる.
dir | wsl grep 'DIR' | wsl wc -l
※厳密にはDOS窓の dir はカレントディレクトリ"." と上位ディレクトリ".." が表示されるため,PS版のdir よりも2行多くなる
◎スタイル(2): wsl <Unixコマンド> Widows上のファイル
例:カレントディレクトリの hoge.txt から 行頭が "aaa" で始まる行を,行番号付きで見つける
wsl grep -n -e '^aaa' ./hoge.txt
Windowsにもいろいろなコマンドレット(PS)やコマンド(DOS)があるが,いまひとつ欲しい情報が得られないことが多い.特にフィルタ系の grep や find はUnixコマンドの方が使い勝手がよい.
かといって,grep ひとつ使うのにいちいちUbuntu ターミナルを起動するのも面倒.
もちろん,Windows側のシェルターミナルの起動が必要ではあるが,Windows側のコマンドとUnixコマンドを混ぜて使えるのは便利この上ない.
WSL Ubuntuをインストールした方は,ぜひとも活用いただきたいものだ.
以上.
#Windows #WSL #Unix #Powershell