ssh でログインしているサーバから Mac のクリップボードにコピーする。
Mac 側の設定
下記のファイルを ~/Library/LaunchAgents/pbcopy.plist に設置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>localhost.pbcopy</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/pbcopy</string>
</array>
<key>inetdCompatibility</key>
<dict>
<key>Wait</key>
<false/>
</dict>
<key>Sockets</key>
<dict>
<key>Listeners</key>
<dict>
<key>SockServiceName</key>
<string>52224</string>
<key>SockNodeName</key>
<string>127.0.0.1</string>
</dict>
</dict>
</dict>
</plist>
launchctl load ~/Library/LaunchAgents/pbcopy.plist でサービス化しておく。
ポート 52224 でサービス待ち受け。サービス名は localhost.pbcopy
Mac 上で動作チェック
$ telnet localhost 52224
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
hello
^]
telnet> ^D
Connection closed.
で Mac のクリップボードに 「hello」が入っていれば OK。
ssh 経由で使用出来るようにするため ssh_config の設定を行っておく。
Host *
RemoteForward 52224 localhost:52224
サーバ側の設定
サーバ側に下記のようなスクリプトをパスの通ったところに入れておくと幸せ。
#!/bin/sh
cat "$@" | nc localhost 52224
使用例
ssh ログイン先で、このように使用する。
$ pbcopy test.rb # Macのクリップボードに test.rb の中身がコピーされる
$ hostname | pbcopy # 同上