LoginSignup
19
13

More than 3 years have passed since last update.

WSLでWindows側とLinux側のパイプの使い分けについて

Posted at

はじめに

WSLを使うと、コマンドウィンドウからLinuxのコマンドが簡単に使えて大変便利です。昔はちょっとしたコマンドを使うのにmsysなどの環境をインストールしていましたが、今どきはWSLだけで事足ります。しかし、WSL環境ならではのパイプの扱いに慣れていないと、期待する結果が得られません。しばらく使っていないとすぐに忘れてしまうので、ワンライナー的なメモにして残すことにしました。

要点

  • Windows側のパイプを使う場合は、普通に書けば大丈夫です。
    type a.txt | wsl cat | findstr "."
  • Linux側のパイプを使う場合は^でエスケープします。
    type a.txt | wsl cat ^| awk '1' ^| python -c "import sys; sys.stdout.write(sys.stdin.read())"
  • 上記をWindowsのパイプで処理させる場合:
    type a.txt | wsl cat | wsl awk '1' | wsl python -c "import sys; sys.stdout.write(sys.stdin.read())"

注意点

  • WSL(Linux側)で処理された結果は、Linux側のコード体系になります。WSLのデフォルトはUTF-8なので注意してください。
  • findstr "."は空行を削除するので、catの代用にはなりません。

おわりに

これが初めての投稿です。至らない点があればご指摘をお願いします。

19
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
13