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


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

1
Не пытаюсь оживить старый вопрос, но если вы ленивый, то echo "Some Text" | xclip -sel cтоже работает.
— анонимно

9

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

xsel < file 

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)может потребоваться , но она работает с и без на убунту с Баш.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.