wsl2
でのpbcopy
の代わり
更新履歴など
- 2023/3: WSL1.1.3.0くらいから仕様が変わったらしく、
clip.exe
に渡す前にエンコーディングを変えることが必要になった。- 自分の環境だと
utf-8
からshift-jis
に変えないと文字化けしてしまう。 - 変更には
iconv
を使うと良いそうだ。 ~
などでiconv
が失敗する場合は、iconv -t=sjis//TRANSLIT
を試してみるべき。
- 自分の環境だと
clip.exe
あるのかなと思いつつ調べるとclip.exe
というのがあった。ちょっと使った感じ全く同じ動作だと思う。
clip.exe
のヘルプメッセージを載せておく:
$ clip.exe /?
CLIP
説明:
コマンド ライン ツールの出力を Windows クリップボードにリダイレクトします。
その出力されたテキストをほかのプログラムに貼り付けることができます。
パラメーター一覧:
/? このヘルプを表示します。
例:
DIR | CLIP 現在のディレクトリ一覧のコピーを Windows クリップボード
に貼り付けます。
CLIP < README.TXT readme.txt ファイルのテキストのコピーを Windows
クリップボードに貼り付けます。
とのことなので、これを使えば:
echo クリップボードにいくよ1 | clip.exe
echo "こっちはencodingを変えるバージョン" | iconv -t=sjis | clip.exe
echo "こちらがエラー時に近似文字に置換するバージョン~" | iconv -t=sjis//TRANSLIT | clip.exe
のようにpbcopy
と同じように使える。
iconv -t=sjis
を使えば文字化けの対策もできるようだ。さらに//TRANSLIT
を付与すると、iconv: illegal input sequence at position 69
などのエラー時に近い文字に置き換えてくれる。参考サイトは以下:
https://linuxjm.osdn.jp/html/LDP_man-pages/man1/iconv.1.html
エイリアスで使う
頭では分かっていても、手が勝手にpbcopy
と打ち始めることが多いので、エイリアスでpbcopy
でできるようにした。
# ~/.bachrc
# ...
alias pbcopy='clip.exe'
# iconv使うときはこっち
alias pbcopy='iconv -t=sjis | clip.exe'
# こちらを使うとエラー時に近似文字に置き換える。
alias pbcopy='iconv -t=sjis//TRANSLIT | clip.exe'
これで気軽にpbcopy
できる:
echo クリップボードにいくよ2 | pbcopy
wsl2はコマンドにもexe
がつくのはなんか嫌な感じがするけど、普通に使えるのでOK。
短いですが以上です。
コメント