結論
Shift JISもしくはUTF-16に変換する。以下のいずれか。
$ cat memo.txt | iconv -t cp932 | clip.exe
$ cat memo.txt | iconv -t sjis | clip.exe
$ cat memo.txt | iconv -t utf16 | clip.exe
$ cat memo.txt | nkf -Ws | clip.exe
$ cat memo.txt | nkf -Ww16L | clip.exe
cp932やsjisの範囲外の文字の場合は UTF-16 にする必要がある。
ちょっと説明
clip.exe
というコマンドがWSLのUbuntuの環境で使えます。テキストをWindowsのクリップボードにコピーするコマンドです。WSLの環境からこのexeファイルを実行できます。
例えばこんな感じです。
$ clip.exe < memo.txt
コマンドの出力をパイプでつないでコピーすることもできます。
$ grep hogehoge < foo.log | clip.exe
WSL環境の中でこんな感じで実行すると、Windowsのクリップボードにコピーされますので、そのあとWindows側で任意のアプリケーションにテキストをペーストできます。
ただし、日本語を含むテキストをUTF-8で扱っている場合、Windowsに貼り付けた際に文字化けしてしまうようです。最近この事象に気が付きました。ダサいけど、Shift JISまたはUTF-16(リトルエンディアン)に変換してからclip.exe
に渡す必要があるようです。
$ cat memo.txt | iconv -t cp932 | clip.exe
$ cat memo.txt | iconv -t sjis | clip.exe
$ cat memo.txt | iconv -t utf16 | clip.exe
$ cat memo.txt | nkf -Ws | clip.exe
$ cat memo.txt | nkf -Ww16L | clip.exe
iconv -t utf16
と nkf -Ww16L
は、BOM付きリトルエンディアンのUTF-16に変換します。
私はタイプする文字数が少ないnkf
を使っています。
nkf
は以下のコマンドでインストールできます。
$ sudo apt-get install nkf
以上。