Вопрос: Что-то вроде pbcopy для OSX для Linux


В терминале в OSX я могу выводить вывод на pbcopy, а затем заходить в веб-браузер и вставлять его. Я пробовал это в Linux с помощью xcopy, но когда я переключаюсь в браузер, он просто перезаписывает буфер обмена с тем, что было в нем, когда последний раз использовался браузер. Что работает как pbcopy в Linux?


127
2018-05-25 09:08


Источник


... и для тех, кто не знает, что такое pbcopy, вот справочная страница developer.apple.com/library/mac/#documentation/Darwin/Reference/... - Rob Cowell
Инструмент, который может быть полезен с ClipIt (и аналогичных менеджеров буфера обмена). Он не только хорошо играет в терминале, но и сохраняет историю буфера обмена. Очень полезно. - brandizzi


Ответы:


если у вас установлен X, вы можете попробовать xsel следующим образом:

alias pbcopy='xsel --clipboard --input'
alias pbpaste='xsel --clipboard --output'

или с помощью xclip:

alias pbcopy='xclip -selection clipboard'
alias pbpaste='xclip -selection clipboard -o'

теперь вы можете использовать'em:

echo 'go to my clipboard' | pbcopy

когда у меня нет X Я использую функциональность GNU Screen для копирования между открытыми оболочками в сеансе с использованием клавиатуры

копировать : Ctrl-a -> Esc -> go to wanted position * -> Space (to begin selecting) -> press k to go forward mark text -> Enter

вставить : Ctrl-a + ]

* движения выполняются с помощью vim, как привязки клавиш (j, k, l & m).


147
2018-05-25 09:33



Спасибо, это именно то, что я хотел. Tho теперь я задаюсь вопросом, есть ли способ, которым я мог бы заставить Screen позволить мне использовать команды Emacs, чтобы выбрать область, которую я хочу скопировать ... - Noah Sussman
xsel: Не удается открыть дисплей: (null): Недопустимый ioctl для устройства - itsazzad
Я решил проблему «Не могу открыть дисплей» в Windows, установив Xming и установка DISPLAY =: 0 - scottgwald


Поместите скрипт вроде pbcopy в папку bin:

#!/bin/bash
xclip -i -sel c -f |xclip -i -sel p

Это поместит STDIN в буфер выделения и буфер обмена:

echo Hello world |pbcopy

8
2018-01-26 10:20



Почему cat быть нужным? Не будет ли это просто перенаправлять stdin на stdout в этом случае, таким образом, бесполезную кошачью жестокость или я что-то упускаю? - Hultner
Вы правы, это похоже на бесполезную кошку :-) - Erik
если вы (как и я) задаетесь вопросом, где таинственный «бесполезный кот», он был удален путем редактирования. NTS: в случае запутывания комментариев проверьте историю ^^ ' - yaitloutou
Как вы вставляете содержимое после его использования? Просто используя xclip -o ? Или есть лучший способ? - n1k31t4


Раскрыть решения @Erik и @xpixelz; эти два сценария должны работать на обеих платформах:

pbcopy:

#!/bin/bash
__IS_MAC=${__IS_MAC:-$(test $(uname -s) == "Darwin" && echo 'true')}
if [ -n "${__IS_MAC}" ]; then
  cat | /usr/bin/pbcopy
else
  # copy to selection buffer AND clipboard
  cat | xclip -i -sel c -f | xclip -i -sel p
fi

pbpaste:

#!/bin/bash
__IS_MAC=${__IS_MAC:-$(test $(uname -s) == "Darwin" && echo 'true')}
if [ -n "${__IS_MAC}" ]; then
  /usr/bin/pbpaste
else
  xclip -selection clipboard -o
fi

4
2018-04-14 18:10



Но почему у вас даже есть этот скрипт на OS X, где он является частью родной области? - Hultner
* как ссылка на аналогичную функциональность, * кросс-платформенные dotfiles: github.com/westurner/dotfiles/blob/develop/scripts/pbcopy - Wes Turner
Все еще злоупотребление кошки и почему бы не проверить, существует ли xclip и назначить псевдоним, если он это сделает? Или проверьте, существует ли двоичный файл pbpaste. Проверка uname кажется странным подходом к проблеме. - Hultner
@Hultner «Проверка uname кажется странным подходом к проблеме». Вы также можете проверить бинарные файлы, предпочтительно, по порядку, по исключению с помощью ${a:-${b:-${c:+${d}}}} и немного type -P/ has переменные назначения и / bin / test execs. - Wes Turner


Этот ответ относится к подсистеме Linux для Windows.

Краткий ответ: используйте clip.exe как будто это было pbcopy чтобы поместить что-то в буфер обмена Windows. Это магия. пример echo "Hello Windows" | clip.exe в вашем bash или терминале bash Ubuntu, а затем `ctrl-v 'в программе Windows.

Больше контекста:

В комментарий выше Я упомянул, что при использовании Xming в Windows для включения этой функции необходимо установить переменную DISPLAY (export DISPLAY=:0, во многих случаях) до xsel а также xclip решения. Беспокойно это решение работает ненадежным, стохастическим способом - при вставке с Linux на Windows, нажатии ctrl-v между одним и десять раз вызывает вставку буфера обмена (один раз) (это на моей Windows 10 Surface Book 2). Не тратьте свое время, используйте clip.exe,

ПРИМЕЧАНИЕ. Не забывайте, что .exe, В противном случае Ubuntu bash предложит установить пакет Linux geomview, который не то, что вы хотите.


1
2018-01-07 17:18