Як надсилати stdin до буфера обміну?


44

Чи є функція в Unix, яка дозволяє:

echo "Some Text" | copy-to-clipboard

ви повинні мати на увазі stdout?
phunehehe

3
це дійсно залежить від того, на якій стороні труби ти стоїш: P до команди, яка надсилає її до буфера обміну, його stdin.
Стефан

2
Люди, які користувались Unix тривалий час, скажуть вам, що краще писати <longTextFile straightToClipboard. Це те саме cat longTextFile straightToClipboard, що і не вимагає запуску cat. Просто спостереження. Не соромтесь ігнорувати це. Ознайомтеся з інформацією про корисні коти нагороди та ознайомтесь із прикладами, якщо вам це цікаво.
Мікель

Відповіді:


34

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

$ echo "Some Text" | xsel -i -b

4
Ще один - xclip; за умовчанням він приймає з stdin. Я використовую його лише тому, що це перший такий інструмент, про який я дізнався.
Шон Дж. Гофф

@Shawn Опублікуйте це як окрему відповідь :)
Michael Mrozek

Я думаю -i, що в цьому випадку не потрібно: man xsel1.2.0 говорить:and the selection is set from standard input if standard input is not a terminal (tty)
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

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 clipboard. 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 призначений для кліпу
Peter.O

гном-термінал. Відредаговано. @jamespo - це, здається, не працює.
ripper234

працює для мене на gnome-терміналі в ubuntu 10.04 за допомогою xsel в репо (вставити з середньою кнопкою)
jamespo


0

Мабуть, найпростіший xclip:

$ echo "Some Text" | xclip

Потім вставте за допомогою середньої кнопки миші.

Мовляв xsel, зазвичай він не встановлюється за замовчуванням, тому вам може знадобитися його встановити ( sudo apt-get install xclipна Debian / Ubuntu).


2
xclipвимагає -selection clipboardопції. Вибір за замовчуванням на його довідковій сторінці - це щось інше.
Acumenus

0

xclipце хороший спосіб, як відповів @Nicolas Raoul, але, коли в буфер обміну передається все, що містить нову лінію, наприклад pwd, новий рядок також копіюється. У деяких ситуаціях це може бути бажаним, але в основному один не хоче нового рядка.

Рішення є або:

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

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

або:

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

""Навколо $(pwd)може знадобитися , але вона працює з і без на Убунту з Баш.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.