133

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

4 ответа4

156

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

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

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

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

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

echo 'go to my clipboard' | pbcopy

когда у меня нет XI, используйте функциональность экрана GNU для копирования между открытыми оболочками в сеансе с помощью клавиатуры

чтобы скопировать: 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).

9

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

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

Это поместит STDIN и в ваш буфер выбора, и в буфер обмена:

echo Hello world |pbcopy
5

Расширить возможности решений @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
2

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

Краткий ответ: используйте clip.exe как если бы это был pbcopy , чтобы поместить что-то в буфер обмена Windows. Это магия. Пример echo "Hello Windows" | clip.exe в вашем терминале 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 , а это не то, что вам нужно.

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