はじめに
Windowsのターミナルで出力されるログを毎回マウスでぐりぐりしながらコピーすることをやっていたので、簡単にクリップボードにコピーできないかを調査した。
環境
Windows 11 Professional
WSL2 Ubuntu 24.04 LTS結論
clip.exe にパイプして渡してあげればよい。
clip.exe を使う
コマンドプロンプト, PowerShell, WSLで利用できる。
使い方は簡単で、下記のように 利用したいコマンド + | + clip.exe を指定するだけ。
[コマンド] | clip.exe例えば、 ipconfig を例にやってみる。
WSL2 (Ubuntu24.04 LTS)ではIPを調べるコマンドはifconfigのため、コマンドプロンプト か PowerShellで実行する。
ipconfig | clip.exeC:\Users\Test>ipconfig | clip.exe
C:\Users\Test>適当なエディタを開いてペーストをすると ipconfigの実行結果が確認できる。
また、クリップボードの履歴を利用しているのであれば、「Windows + V」でも確認ができる。
clip.exeでターミナルに出力した上でコピーする
※WSL2(Linuxのシェル限定の話)
ifconfig | clip.exe↓
ifconfig | tee >(clip.exe)コマンドの動作としては、
ifconfig の出力を tee コマンドに渡し、tee コマンドはその出力を標準出力(ターミナル)に表示する。
>(clip.exe) でプロセス置換を行うことで tee コマンドは出力を clip.exe にパイプしている。
clip.exeでの文字化けについて
WSL2での動作例を記載する。
echo "日本語" | tee >(clip.exe)
日本語出力としては、文字化けしていないがクリップボードでは以下のようになった。
譌・譛ャ隱・iconv -t cp932を挟む。
echo "日本語" | iconv -t cp932 | clip.exe※この場合は特に問題なくクリップボードにコピーされている。
cp932 の範囲外の文字だとどうなのか。
日本語 (シフト JIS) - CP932 - 文字コード表 | UIC を参考に範囲外文字を指定してみる。
例えば絵文字とか。 (📝を例にやってみる。)
echo "絵文字📝" | iconv -t cp932 | clip.exeiconv: illegal input sequence at position 9となった。
では、UTF-16とする。
echo "絵文字📝 " | iconv -t utf16 | clip.exeいけてる!↓
絵文字📝 参考
clip | Microsoft Learn
https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/clipMicrosoftの中の人直伝! 「clip.exe」を覚えるとコマンドラインやWSLで便利だぞ
https://forest.watch.impress.co.jp/docs/serial/yajiuma/1612972.htmlLinuxでのプロセス置換
https://qiita.com/angel_p_57/items/fd1d9a10e2f4aba17669clip.exeにUTF-8のテキストを渡すと文字化けするようになったので、代替ツールを作った
https://xn--kst.jp/blog/2023/04/13/uclip/WSLの環境からWindowsにclip.exeするときの文字化け対処
https://qiita.com/suzuki-navi/items/f340c69ccada84a3ece3WSLのコマンド実行結果をクリップボードにコピーするなら clip.exe を工夫して使おう!
https://qiita.com/tawara_/items/0916eaec6ad09fce86a5日本語 (シフト JIS) - CP932 - 文字コード表 | UIC
https://uic.jp/charset/show/cp932/
おわりに
インストールのログとか dnf list installed とかで出力した結果とかをクリップボードにコピーするのはかなり手間がかかるのでこれを積極的に使っていきたい。