#author("2021-02-20T15:09:48+09:00","default:nobuoki","nobuoki") #author("2021-02-20T15:13:52+09:00","default:nobuoki","nobuoki") * はじめに [#x713d04b] WSL導入済みの環境で、コマンドプロンプトからLinuxのコマンドを使うには、「wsl awk」のように、頭に「wsl」を付けます WSL導入済みの環境で、コマンドプロンプトからLinuxのコマンドを使うには ''wsl awk'' のように、頭に ''wsl'' を付けます - [[Windows 10のコマンドプロンプトからWSL上のLinuxコマンドを呼び出す(バージョン1803対応版):Tech TIPS - @IT>https://www.atmarkit.co.jp/ait/articles/1805/24/news022.html]] とはいえコマンドを使うたびにいちいち頭に「wsl」を付けるのは手間なので、予めバッチファイルを作成し、例えば「awk」と打つだけで「wsl awk」にすると便利です とはいえコマンドを使うたびにいちいち頭に ''wsl'' を付けるのは手間なので、予めバッチファイルを作成し、例えば ''awk'' と打つだけで ''wsl awk'' に変換すると便利です このバッチファイルを一気に作成する方法をご紹介します ** WSLを導入していない(システム管理上の都合でWSLが入れられない)場合のおすすめ [#w1409401] [[busybox-w32>https://frippery.org/busybox/]] がおすすめです - [[インストール不要!WindowsでLinuxコマンドを使う - Qiita>https://qiita.com/tetsuy/items/22cba0bc2048967b270a]] * 大まかな流れ [#g7ab02ae] - Windows環境変数「PATH」の追加 - コマンドプロンプトで、「PATH」に追加したディレクトリを作成 - WSL側で、Linuxコマンドの数だけバッチファイルを作成 完成イメージ #ref(./wsl-cmd-03.jpg,60%) * Windows環境変数「PATH」の追加 [#qbb400e5] ※ 既存のPATHにバッチファイルを作成する人は読み飛ばしてください スタート>設定>「システムの詳細設定」と検索し、「システムの詳細設定の表示」をクリック #ref(./wsl-cmd-01.jpg,70%) 右奥から順に、 システムのプロパティ「環境変数(N)」 >環境変数「Path」を選択し「編集(E)」 >環境変数名の編集「新規(N)」を押し ''%userprofile%\bin'' を追加 #ref(./wsl-cmd-02.jpg,90%) * コマンドプロンプトで、「PATH」に追加したディレクトリを作成 [#k92af628] * コマンドプロンプトで ''PATH'' に追加したディレクトリを作成 [#k92af628] - コマンドプロンプト(cmd.exe)を起動して以下のコマンドを打ち込みます #pre{{{ mkdir %userprofile%\bin cd %userprofile%\bin }}} * WSL側で、Linuxコマンドの数だけバッチファイルを作成 [#p2026ab4] - コマンドプロンプト(cmd.exe)で以下のコマンドを打ち込み、WSLのbashを起動します #pre{{{ wsl bash }}} - bash 上で以下のコマンドを打ち込み、Linuxコマンド起動用のバッチファイルを量産します echo, find コマンドは衝突しないように、頭に「w」を付けて wecho, wfind に置き換えています(頭の w は好きなように変えてください) echo, find コマンドは衝突しないように、頭に ''w'' を付けて ''w''echo, ''w''find に置き換えています(頭の ''w'' は好きなように変えてください) #pre{{{ find /bin/ /usr/bin/ -maxdepth 1 -perm -o+x | awk -F/ '{a[$NF]++}END{for(v in a)print "@wsl "v" %*">v".bat"}' for c in echo find; do mv ${c}.bat w${c}.bat; done exit }}} これでコマンドプロンプト環境で、頭に「wsl」を付けずに Linux コマンドを使うことが出来ます これでコマンドプロンプト環境で、頭に ''wsl'' を付けずに Linux コマンドを使うことが出来ます * Tips [#gb16510c] - Linuxコマンドを起動するバッチファイルの雛形は ''@WSL コマンド名 %*'' です -- 先頭の @ で、画面にコマンド行が表示されないようにしています -- バッチファイル引数を %* によりLinuxコマンドに引き継ぎます - windowsコマンドをLinuxコマンドにパイプするときは、nkf -w 等でUTF-8に変換する必要があるかもしれません 文字コード変換が必要な例 #ref(./wsl-cmd-04.jpg,75%)