WSLでWindows側とLinux側のパイプの使い分けについて
はじめに
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
の代用にはなりません。
おわりに
type a.txt | wsl cat | findstr "."
^
でエスケープします。type a.txt | wsl cat ^| awk '1' ^| python -c "import sys; sys.stdout.write(sys.stdin.read())"
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
の代用にはなりません。
おわりに
これが初めての投稿です。至らない点があればご指摘をお願いします。
Author And Source
この問題について(WSLでWindows側とLinux側のパイプの使い分けについて), 我々は、より多くの情報をここで見つけました https://qiita.com/e4rfx/items/7cb0be97be552d0068ff著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .