答え
.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にしている。