web-dev-qa-db-ja.com

ヘッドレスサーバー上のxclip

私はxclipを使用して、bashコマンドの出力を次のようにコピーしています。

pwd | tr -d "\n" | xclip -selection c

その後、出力を別のターミナルセッションに貼り付けることができます。

Xなしで起動されるヘッドレスサーバー(ubuntu 13.04)で使用しようとしていました。エラーで動作しません:

Error: Can't open display: (null)

これを回避する方法はありますか。プログラムがxclipと呼ばれているのを見るのは不可能かもしれないことを理解しています。

24
Anake

クリップボードは Xサーバー によって提供されます。サーバーがヘッドレスであるかどうかは関係ありません。重要なことは、ローカルグラフィカルセッションがリモートマシンで実行されているプログラムで利用できることです。 Xのネットワーク透過設計のおかげで、これは可能です。

Linuxを実行しているマシンからSSHでリモートサーバーに接続していると仮定します。クライアント構成とサーバー構成の両方でX11転送が有効になっていることを確認してください。クライアント構成では、ForwardX11 yes~/.ssh/configの行をデフォルトで有効にするか、そのセッションのためにsshコマンドに-Xオプションを渡す必要があります。 。サーバー構成では、X11Forwarding yes/etc/ssh/sshd_configという行が必要です(Ubuntuにはデフォルトで存在します)。

X11転送が有効になっているかどうかを確認するには、DISPLAY環境変数の値を見てください:echo $DISPLAYlocalhost:10のような値が表示されるはずです(リモートマシンで実行されているアプリケーションは、同じマシンで実行されているディスプレイに接続するように指示されますが、そのディスプレイ接続は実際にはSSHによってクライアント側ディスプレイに転送されます)。 DISPLAYが設定されていない場合、手動で設定しても意味がありません。転送が設定されている場合、環境変数は常に正しく設定されます。 SSH接続の問題を診断する必要がある場合は、オプション-vvvsshに渡して、何が起こっているかの詳細なトレースを取得します。

他の方法で接続している場合、X11転送を実現できる場合とできない場合があります。クライアントがWindowsを実行している場合、 PuTTY はX11転送をサポートします。 Xming などのWindowsマシンでXサーバーを実行する必要があります。

26
Gilles

Bash自体にはクリップボードがありません。 Xの機能です。 xcliptは単なるコマンドラインインターフェイスであり、ご覧のとおり、displayが必要です。回避策は、一時ファイルを使用することです。

$ echo 123 > /tmp/f
$ tr -d '2' < /tmp/f
13
4
Nykakin