Как я могу скопировать вывод удаленной команды в локальный буфер обмена?
Я использую iTerm2
в качестве моего терминального клиента в Mac OS X. В локальной системе я могу использовать pbcopy
а также pbpaste
для передачи данных между системным буфером обмена и терминалом, но, конечно, это не работает, когда вы подключены к другому компьютеру.
Есть ли способ, которым я могу взять результат команды и автоматически скопировать его в буфер обмена? Возможно яблочный скрипт, чтобы взять текст на iTerm
окна, а затем получить следующую последнюю строку?
Например, если я хочу скопировать текущий рабочий каталог:
я бегу pwd
затем с помощью мыши выделите текст и нажмите command + c
,
Есть ли лучший / быстрый / автоматический способ сделать это? Я не ищу пуленепробиваемое решение, которое бы работало для каждой команды (например, может не работать при огромном прокрутке) - я просто ищу что-то, чтобы сделать эту задачу, которую я делаю, довольно часто немного менее утомительной.
Обновить
Я смотрю на использование screen
сделать это, но я все еще не уверен, возможно ли это.
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.)
Когда я впервые придумал это, это казалось хакерским, но чем больше я играю с этим, тем больше оно мне нравится.
Упрощенное решение
На вашем 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
Вероятно, вы можете использовать именованный канал на удаленном хосте и автоматически скопировать данные в локальный буфер обмена, выполнив некоторую команду в фоновом режиме, но это усложняет настройку.