Mac OSXのターミナルクライアントとしてiTerm2
を使用しています。ローカルシステムでは、pbcopy
とpbpaste
を使用して、システムクリップボードとターミナル間でデータを転送できますが、もちろんです。別のマシンにSSH接続している場合、これは機能しません。
コマンドの結果を取得してクリップボードに自動的にコピーする方法はありますか?おそらく、iTerm
ウィンドウのテキストを取得し、最後から2番目の行を取得するためのAppleScriptですか?
たとえば、現在の作業ディレクトリをコピーしたい場合:
pwd
を実行し、マウスを使用してテキストを選択し、command + c
を押します。
これを行うためのより良い/より速い/自動の方法はありますか?私はすべてのコマンドで機能する防弾ソリューションを探していません(たとえば、大きなスクロールバックがあると機能しない可能性があります)-私はこのタスクを行うための何かを探しています。
更新
screen
を使用してこれを行うことを検討していますが、それが可能かどうかはまだわかりません。
まあ、私はこれを試したところ、うまくいきました:
echo "foo" | tee | ssh [email protected] pbcopy
ノート:
ssh
クライアントマシンにコピーするコマンドの代用としてecho "foo"
を使用しています。tee
を使用しているので、ssh
コマンドですべてを飲み込むのではなく、ターミナルウィンドウで直接表示できます。ssh
に実行するコマンドを与えることにより、stdin
が受信したssh
を他のホスト上のそのコマンドに送信し、すぐに戻ります。おそらく、入力が簡単なものにエイリアスすることができます。また、パスワードベースの認証の代わりにssh
キーを使用して、パスワードを再入力する手間を省いてください。 更新:そして SSHエージェント転送 を使用できるので、ローカルマシンにアクセスするために資格情報を入力する必要はありませんリモートボックス。
(注:ssh/tty/Shellセッションのみがあり、Mac OS X GUIコンテキストがない場合、pbcopy/pbpasteがどの程度うまく機能するかわかりません。ペーストボードはNeXTSTEP/Cocoa /だと思います。 Aqua/GUIの概念であり、必ずしもGUIレイヤーなしでUnixレイヤーに存在するものではありません。)
私が最初にこれを思いついたとき、それはハックのように見えました、しかし私がそれで遊ぶほど、私はそれが好きになります。
単純な解決策
Sshremote.Hostで/usr/local/bin/spbcopy
を作成します:
#!/bin/bash
cat >$HOME/.Pastebin
OSXで/usr/local/bin/spbpaste
を作成します:
#!/bin/bash
ssh $* 'cat .Pastebin; >$_'
以下を使用してデータをクリップボードにコピーします。
[email protected]$ echo "foo" | spbcopy
そして、以下を使用してクリップボードからデータを貼り付けます。
osx$ spbpaste [email protected]
リモートホストで名前付きパイプを使用し、バックグラウンドでコマンドを実行することでデータをローカルクリップボードに自動的にコピーできますが、セットアップがさらに複雑になります。