Как отправить стандартный ввод в буфер обмена?

44

Есть ли в Unix функциональность, которая позволяет:

echo "Some Text" | copy-to-clipboard
Стефан
источник
ты имеешь ввиду stdout?
phunehehe
3
это действительно зависит от того, на какой стороне канала вы стоите: P команде, которая отправляет его в буфер обмена stdin.
Стефан
2
Люди, которые долгое время пользовались Unix, скажут вам, что лучше писать <longTextFile straightToClipboard. Это так же, как cat longTextFile straightToClipboard, но не требует запуска cat. Просто наблюдение. Не стесняйтесь игнорировать это. Посмотрите Награду «За бесполезное использование кошек», если вам интересно.
Микель

Ответы:

34

Есть пара инструментов, способных записывать в буфер обмена; Я использую xsel. Для записи в основной X selection ( -p), вторичный selection ( -s) или в буфер обмена ( -b) требуются флаги . Передав это, -iон скажет, что читает со стандартного ввода, так что вы хотите:

$ echo "Some Text" | xsel -i -b
Михаил Мрозек
источник
4
Еще один - xclip; он принимает от стандартного ввода по умолчанию. Я использую его только потому, что это первый такой инструмент, о котором я узнал.
Шон Дж. Гофф
@Shawn Отправьте это как отдельный ответ :)
Michael Mrozek
Я думаю, что -iне требуется в этом случае: man xsel1.2.0 говорит:and the selection is set from standard input if standard input is not a terminal (tty)
Сиро Сантилли 新疆 改造 中心 法轮功 六四 事件
xsel не работал для меня (я не знаю почему), но xclip (по другим ответам) работал.
Маркриан
11

Используя xclip, как предложил @Nicolas, если вы хотите позже вставить содержимое буфера обмена, например, используя Ctrl + V, вы можете использовать его следующим образом:

$ echo "Some Text" | xclip -selection clipboard
danidemi
источник
1
Не пытаюсь оживить старый вопрос, но если вы ленивый, то echo "Some Text" | xclip -sel cтоже работает.
анонимно
9

Вы можете использовать Xsel

xsel < file 
jamespo
источник
10
Вопрос в том, какой буфер обмена? Linux X-сервер имеет 3 (обычно используется только 2) ... xsel использует буфер обмена PRIMARY по умолчанию. Буфер обмена PRIMARY включается автоматически каждый раз, когда вы просто выбираете что-то. Вы вставляете, нажимая центральную кнопку мыши. Буфер обмена типа Ctrl + C / Crtr + V называется буфером обмена CLIPBOARD :) .. поэтому, если вы хотите использовать буфер обмена Ctrl + C / Ctrl + V с 'xsel', команда выглядит так: xsel -ib <file-long-or-short(«Смотри, мам, нет кота!» :) ... или, если тебе нравится <file-long-or-short xsel -ib.. -i по умолчанию. -b для типа clipBoard
Peter.O
гном-терминал. Ред. @jamespo - похоже, это не работает.
ripper234
у меня работает на gnome-терминале в ubuntu 10.04 с использованием xsel в репо (вставка со средней кнопкой)
jamespo
7

В Mac OS X есть прекрасные pbcopyи pbpasteкоманды , которые очень полезны :)

УХО
источник
0

Самый простой, вероятно xclip:

$ echo "Some Text" | xclip

Затем вставьте с помощью средней кнопки мыши.

Например xsel, он обычно не устанавливается по умолчанию, поэтому вам может потребоваться установить его ( sudo apt-get install xclipв Debian / Ubuntu).

Николас Рауль
источник
2
xclipтребует -selection clipboardопции. Выбор по умолчанию для его man-страницы - это нечто другое.
Acumenus
0

xclipЭто хороший способ, как ответил @Nicolas Raoul, но при передаче в буфер обмена всего, что содержит символ новой строки, например pwd, новая строка также копируется. В некоторых ситуациях это может быть желательно, но в большинстве случаев не требуется перевода строки.

Решение либо:

echo -n $(pwd) | xclip -selection clipboard

( -nудаляет символ новой строки из аргумента echoed)

или:

printf %s $(pwd) | xclip -selection clipboard

""Вокруг $(pwd)может потребоваться , но она работает с и без на убунту с Баш.

calocedrus
источник