Як підключити стандартний висновок (stdout) до буфера обміну?


106

Наприклад,

Скажіть, я хочу перерахувати вміст папки та безпосередньо вставити їх у вікно чату, щоб друг побачив.

Я розумію, що міг ls > filename.txtби створити файл (filename.txt) із цим вмістом; Тоді я повинен був би відкрити або роздрукувати файл і вручну вибрати та скопіювати текстовий блок ( що може бути дратує / нудно .) Я чітко також міг би вибрати та скопіювати вихід lsбезпосередньо з вікна терміналу.

Було б набагато швидше / простіше просто передати стандартний вихід у буфер обміну .

Яка команда терміналу дозволяє мені це зробити?


Відповіді:


122

Це можна зробити за допомогою утиліт xsel або xclip командного рядка. Оскільки жодна програма не постачається з Ubuntu за замовчуванням, вам потрібно спочатку встановити їх через програмне забезпечення Ubuntu або термінал. Ось як у терміналі (але пам’ятайте, що вам потрібен лише один із цих двох.)

sudo apt install xsel
sudo apt install xclip

Тепер кілька прикладів. Якщо ви хочете скопіювати вихід lsу буфер обміну, ось що ви зробите:

З xsel:

ls | xsel -ib

За допомогою xclip:

ls | xclip -sel clip

Звичайно, це можна використовувати і для інших команд терміналів . Скажімо, ви хочете вставити інформацію про свою мережу на довідковий форум.

З xsel:

sudo lshw -C network | xsel -ib

За допомогою xclip:

sudo lshw -C network | xclip -sel clip

Зробити це ще простіше з новим псевдонімом bash!

Відредагуйте ~/.bash_aliasesфайл (якщо він ще не існує, створіть його спочатку touch ~/.bash_aliases)

Потім додайте одну (залежно від того, з якою програмою ви вирішили перейти) з наступного:

alias copy='xclip -sel clip'

або

alias copy='xsel -ib'

Потім збережіть і закрийте.

Тепер (після перезавантаження вашого терміналу) ви можете надіслати стандартний висновок у буфер обміну, просто переклавши його на "копіювати" (або як ви вирішите назвати свій новий псевдонім)

Наприклад:

ls | copy

1
З новішими версіями Ubuntu ви повинні використовувати apt. Так sudo apt install xselчи sudo apt install xclip.
wisbucky

1
Дякую за відповідь, але чи знаєте ви що-небудь лише для терміналу Linux?
Мухаммад

1
@jpaugh. Порівняйте документацію управління пакетами Ubuntu за 16.04 проти 14.04 . У 16.04 він лише згадує aptі ні apt-get. Ви все ще можете користуватися apt-get, але вони намагаються заохотити людей до використання apt.
вісбукі

2
Вам не доведеться перезавантажувати термінал; можна простоsource ~/.bash_aliases
Роб К

1
@Mohamad Вони призначені для роботи на сервері X (оскільки він забезпечує функцію буфера обміну). Якщо у вас цього немає, вам потрібно зробити це в емуляторі терміналу. Як це зробити, залежить від фактичного програмного забезпечення, яке ви використовуєте, оскільки для цього не існує фактичного стандарту.
Thorbjørn Ravn Andersen

2

Якщо ви намагаєтесь скопіювати у буфер обміну за допомогою Ubuntu в підсистемі Windows для Linux (WSL), xsel або xclip не працюватимуть, якщо ви не використовуєте X Windows, оскільки буфер обміну призначений лише для грехіпіків. Однак для стандартного виходу терміналу в буфер обміну в WSL Ubuntu ви можете використовувати clip.exe. Потім можна вставити в термінал WSL Ubuntu за допомогою стандартних команд вставки, а скопійований текст буде доступний і в Windows. Наприклад,

pwd | clip.exe 

скопіює поточний робочий каталог у буфер обміну (Windows).

Цей результат пошуку з’являється вгорі під час пошуку способів копіювання / вставлення тексту у WSL, тому я думаю, що варто згадати це, щоб читачі не зайве встановлювати xsel чи xclip в Ubuntu, а використовувати clip.exe.

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