6

Я использую iTerm2 качестве терминального клиента в Mac OS X. В локальной системе я могу использовать pbcopy и pbpaste для передачи данных между системным буфером обмена и терминалом, но, конечно, это не работает, когда вы подключаетесь к другому машина.

Есть ли способ, которым я могу взять результат команды и автоматически скопировать его в буфер обмена? Возможно, текстовый скрипт для захвата текста в окнах iTerm , а затем для перехода к следующей строке?

Например, если я хочу скопировать текущий рабочий каталог:

Picture-48.png

Я запускаю pwd , затем использую мышь, чтобы выделить текст, а затем нажимаю command + c .

Есть ли лучший / быстрый / автоматический способ сделать это? Я не ищу пуленепробиваемого решения, которое бы работало для каждой команды (например, может не работать при огромном прокрутке) - я просто ищу что-то, чтобы сделать эту задачу, которую я делаю, довольно часто немного менее утомительной.

Обновить

Я пытаюсь использовать screen чтобы сделать это, но я все еще не уверен, возможно ли это.

2 ответа2

2

Ну, я просто попробовал это, и это работает:

echo "foo" | tee | ssh YourUsername@your.ssh.client.host pbcopy

Заметки:

  • Я использую echo "foo" в качестве замены для команды, вывод которой вы хотите скопировать на ваш клиентский компьютер ssh .
  • Я использую tee чтобы вы могли видеть его прямо в окне терминала, вместо того чтобы проглатывать его командой ssh .
  • Давая ssh команду для запуска, он будет посылать stdin , что ssh получил в этой команде на этом другом хосте, а затем сразу же вернуться.

Вы могли бы, вероятно, псевдоним это что-то более простое для ввода И обязательно используйте ключи ssh вместо аутентификации на основе пароля, чтобы избавить себя от необходимости повторного ввода пароля. Обновление: и вы можете использовать SSH Agent Forwarding, чтобы вам не нужно было вводить учетные данные для доступа к вашему локальному компьютеру на удаленной машине.

(Примечание: я не уверен, насколько хорошо работает pbcopy/pbpaste, когда у вас есть только сеанс ssh/tty/shell и нет контекста графического интерфейса Mac OS X. Я думаю, что монтажная плата - это концепция NeXTStep/Cocoa/Aqua/GUI, не обязательно такая, которая выходит на уровне Unix без уровня GUI.)

Когда я впервые придумал это, это казалось хакерским, но чем больше я играю с этим, тем больше оно мне нравится.

0

Упрощенное решение

На вашем ssh remote.host создайте /usr/local/bin/spbcopy:

#!/bin/bash
cat >$HOME/.pastebin

На вашей OSX создайте /usr/local/bin/spbpaste:

#!/bin/bash
ssh $* 'cat .pastebin; >$_'

Скопируйте данные в буфер обмена, используя:

user@remote.host$ echo "foo" | spbcopy

И вставьте данные из буфера обмена, используя:

osx$ spbpaste user@remote.host

Вероятно, вы можете использовать именованный канал на удаленном хосте и автоматически скопировать данные в локальный буфер обмена, выполнив некоторую команду в фоновом режиме, но это усложняет настройку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .