Я использовал xclip для копирования вывода команд bash, например, так:
pwd | tr -d "\n" | xclip -selection c
, чтобы затем я мог вставить вывод в другой сеанс терминала.
Я пытался использовать его на моем безголовом сервере (Ubuntu 13.04), который запускается без x. Это не работает с ошибкой:
Error: Can't open display: (null)
Есть ли способ обойти это. Я понимаю, что, поскольку программа называется xclip, это может оказаться невозможным.
Буфер обмена предоставляется X-сервером . Не имеет значения, является ли сервер автономным или нет, важно то, что ваш локальный графический сеанс доступен для программ, запущенных на удаленном компьютере. Благодаря прозрачному для сети дизайну X это возможно.
Я предполагаю, что вы подключаетесь к удаленному серверу по SSH с компьютера под управлением Linux. Убедитесь, что переадресация X11 включена как в конфигурации клиента, так и в конфигурации сервера. В конфигурации клиента вам нужна строка ForwardX11 yes
в ~/.ssh/config
, чтобы включить ее по умолчанию, или передать опцию -X
команде ssh
только для этого сеанса. В конфигурации сервера вам нужно иметь строку X11Forwarding yes
в /etc/ssh/sshd_config
(она присутствует по умолчанию в Ubuntu).
Чтобы проверить, включена ли пересылка X11, посмотрите значение переменной среды DISPLAY
: echo $DISPLAY
. Вы должны увидеть значение, подобное localhost:10
(приложения, работающие на удаленном компьютере, должны подключиться к дисплею, работающему на том же компьютере, но это соединение дисплея фактически передается по SSH на дисплей на стороне клиента). Обратите внимание, что если DISPLAY
не установлено, его не нужно настраивать вручную: переменная окружения всегда устанавливается правильно, если переадресация установлена. Если вам нужно диагностировать проблемы с SSH-соединением, передайте опцию -vvv
- ssh
, чтобы получить подробную информацию о происходящем.
Если вы подключаетесь каким-либо другим способом, вы можете или не сможете достичь переадресации X11. Если ваш клиент работает под управлением Windows, PuTTY поддерживает пересылку X11; вам придется запустить X-сервер на компьютере с Windows, например, Xming .
Сам Bash не имеет буфера обмена. Это особенность X. xclipt
- это просто интерфейс командной строки, и, как вы видите, он требует display
. Обходной путь - просто использовать временный файл:
$ echo 123 > /tmp/f
$ tr -d '2' < /tmp/f
13