0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WSL上でpbcopy,pbpasteを実現するエイリアス

Posted at

答え

.bashrc
alias pbcopy='powershell.exe -command "[Console]::InputEncoding = [System.Text.Encoding]::UTF8; Set-Clipboard -Value ([Console]::In.ReadToEnd())"'

alias pbpaste='powershell.exe -command "[Console]::OutputEncoding = [System.Text.Encoding]::UTF8; Get-Clipboard"'

実行結果

$ echo あいう🐏 | pbcopy
$ pbpaste
あいう🐏

clip.exeもつかえるけどギリ使えない

以下の記事のように
https://forest.watch.impress.co.jp/docs/serial/yajiuma/1612972.html
clip.exeを使うという手もある。ただ何も設定しないとclip.exeはSJISでの入力を求めるので、日本語を渡すときにはエンコードの変換が必要。

echo "窓の杜" | iconv -t cp932 | clip.exe

とすれば、日本語も通せるが、SJISの範囲を超える絵文字を渡すとエラーになる。対応策としてuclipという別のアプリをインストールするという案内があるが、標準で入ってるものだけにしたい。

そもそも、cp932という変換が必要なのは日本語Windows縛りのエイリアスになってるので、そもそも言語設定依存のロジックにしたくない。

ということで、最初からpowershellの範囲でやればいいじゃないってことで、powershellに対してinputエンコーディングとoutputエンコーディングをUTF8を指定する形で、Set-ClipbordとGet-Clipbordを呼び出してる。

コマンドの呼び出しはMacにそろえてpbcopyとpbpasteにしている。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?