それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

wsl環境のターミナルで pbcopy/pbpaste でクリップボードにコマンドの結果を入れる。

pbcopy/pbpaste を使いたい

macOSならターミナルとCocoaクリップボードをpbcopy でやり取りできるのですが、WindowsのWSLDebian/Ubuntuでも同じようにコピー・ペーストのクリップボードをターミナルから使いたかった。

調べたら見つかったのでメモ

使い方

openssl -rand -base64 123 | pbcopy
pbpast | cat - 

コマンド pbcopy を作ればいい。

Linuxのときもそうだったけど、ないならなんとかAliasやシェルを組み合わせて実現したらいい。

調べたら、もうすでにあった。

# ~/.bin/pbcopy

#!/bin/bash
# pbcopy for wsl


wsl=/mnt/c/Windows/System32/wsl.exe
clip=$( $wsl wslpath C:/Windows/System32/clip.exe)
ps=$( $wsl wslpath C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe )

##
tee <&0 | $clip
exit 0

# ~/.bin/pbpaste

#!/bin/bash
# pbcopy for wsl


wsl=/mnt/c/Windows/System32/wsl.exe
clip=$( $wsl wslpath C:/Windows/System32/clip.exe)
ps=$( $wsl wslpath C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe )

##
$ps Get-Clipboard | sed 's/\r$//' | sed -z '$ s/\n$//'
exit 0

# PATH に追加。

つくった、コマンドをいつでも使えるようにPATHに追加する。

export PATH=$HOME/.bin:$PATH >> ~/.bashrc
source ~/.bashrc

使っている wsl コマンドについて。

Windows の cmd.exe / ps から wsl を起動するコマンド wsl は、オプションで wslpath を指定すると、windowsのパスを wsl のパスに変換できる。

takuya@DESKTOP-2AO3 C:\Users\takuya > wsl wslpath  C:/Users/takuya/Desktop/
/mnt/c/Users/takuya/Desktop/

つかっている clip コマンドについて

CLIPは「クリップボードへコマンド結果を流し込む」事ができる。昔からあるコマンドです。ただしペーストはできません。

C:\Users\takuya>clip /?

CLIP

Description:
    Redirects output of command line tools to the Windows clipboard.
    This text output can then be pasted into other programs.

Parameter List:
    /?                  Displays this help message.

Examples:
    DIR | CLIP          Places a copy of the current directory
                        listing into the Windows clipboard.

    CLIP < README.TXT   Places a copy of the text from readme.txt
                        on to the Windows clipboard.

ペースト(貼り付け)の実現

ペーストについては、PowerShell(PS)を利用する。

ps Get-Clipboard

これを、WSLのPATH内部からWindowsのコマンドを実行することで実現する。

私の実行環境は

実行環境は、WSL v1 です。WSL2 は暗号化ドライブを一旦解除して、インストールしなおしになるので面倒なので WSL2にバージョンアップしていません・・・

参考資料

https://www.techtronic.us/pbcopy-pbpaste-for-wsl/