- Работа с буфером обмена в Linux: теория и практика
- Совсем немного теории
- Практика
- Скрипты
- Что дальше?
- Copy File Contents Into Clipboard Without Displaying Them
- What is Clipboard?
- Copy file contents into Clipboard without displaying its contents, using Xclip and Xsel programs in Linux
- Copy Linux and Unix commands output to clipboard
- Linux console copy to clipboard
- Буфер обмена в Linux (копирование и вставка)
- Буфер копирования
- Буфер выбора (первичный буфер)
- Копирование и вставка в терминале
Работа с буфером обмена в Linux: теория и практика
Совсем немного теории
Исторически сложилось так, что в X Window System (X11, — оконная система для Linux, UNIX) существует два буфера обмена.
Один из них (clipboard) похож на буфер обмена в Windows — при нажатии на Ctrl+Insert или Ctrl+C выделенный фрагмент (текст, картинка, файл) копируется в буфер обмена, а при нажатии на Shift+Insert (или Ctrl+V) — вставляется из него. Следует заметить, что во многих программах эти сочетания зарезервированы для иных целей и приходится пользоваться другими — например, в терминале сочетание Ctrl+C используется для завершения процесса, а для работы с буфером обмена используются сочетания Ctrl+Shift+C для копирования и Ctrl+Shift+V для вставки.
Второй буфер (primary) является специфичным для оконной системы X11. Выделенный текст незамедлительно попадает в буфер primary, и для того, чтобы вставить скопированный текст, достаточно лишь нажать среднюю кнопку мышки (колёсико). У кого в наличии не имеется трёхкнопочной мышки, а так же владельцам ноутбуков с тачпадами следует одновременно нажать левую и правую кнопки мышки для вставки текста.
Обычно эти буферы не связаны друг с другом (некоторые программы некорректно их обрабатывают и считают, что это один и тот же буфер обмена). Следовательно, хранящиеся в них данные не влияют друг на друга, что, несомненно, крайне удобно. Следует заметить, что при закрытии программы, из которой были скопированы данные, содержимое буфера обмена теряется.
Практика
Для решения проблемы утери данных из буфера обмена при закрытии программы существует сторонний софт. Например, Clipboard Daemon. Этот маленький демон держит содержимое буфера обмена в памяти независимо от того, было ли закрыто приложение, из которого скопированы данные.
Для более комфортной работы с буфером обмена существует целый ряд программ:
- Parcellite — многообещаюший менеджер буфера обмена на GTK
- glipper — для Gnome
- klipper — для KDE
- wmcliphist — для Window Maker
- и куча других (в том числе для Windows, Mac OS и прочего).
Эти программы позволяют существенно облегчить работу — они хранят историю содержимого буферов обмена — в любой момент можно вернуться к любому из предыдущих состояний (в пределах разумного, конечно, — этот предел, как водится, устанавливается в настройках) и воспользоваться им =)
Существует так же весьма и весьма полезная в умелых руках утилита под названием xclip, предназначенная для работы с буферами обмена из командной строки. Копирование и вставка текста осуществляется простыми командами, что позволяет использовать её в различного рода вспомогательных скриптах, примеры которых я продемонстрирую ниже.
К сожалению, официальная версия xclip у меня с кириллицей корректно не заработала, несмотря на то, что я собирал последнюю версию. Поэтому я предлагаю скачать и собрать версию xclip для дистрибутива Alt Linux.
Скрипты
xclip -o | sed -n 1p | xargs firefox -new-tab
Он открывает новую вкладку в Firefox с адресом, который находится в буфере обмена (очень часто нужно открыть ссылку в виде простого текста — например, если ссылка встретилась в текстовом редакторе — приходится её копировать, открывать вкладку в браузере и вставлять скопированный адрес. Скрипт делает всё за вас ;). Я назначил его на сочетание Win+F.
Благодаря тому, что буфер обмена является универсальной для ОС сущностью, эти скрипты будет работать везде — от терминала и текстового редактора до самого Firefox’а (впрочем, желающие могут настроить этот же скрипт и для альтернативных браузеров. Назначить скриптам сочетание кнопок можно как с помощью вашего windows manager’а (например, gconf-editor для Gnome), так и с помощью сторонних программ, таких как xmodmap или actkbd.
Что дальше?
Да что угодно =) Можно переводить фразы, выделенные мышкой, можно копировать их в программу для заметок — всё зависит от вашей фантазии и потребностей. Конечно, для таких вещей могут существовать отдельные программы, но такие вот самописные скрипты, на мой взгляд, для любого пользователя окажутся удобнее всего — linux тем и хорош, что можно всё, абсолютно всё настроить под себя и для себя.
Update: добавлена ссылка на менеджер буфера обмена Parcellite — спасибо хабрапользователю drujebober
Update 2: по просьбе хабраюзера dimaka добавил скрипты для перевода:
+ ! t t
f Copy full filename into clipboard
echo -n %d/%f | xclip
_________
Текст подготовлен в редакторе VIM 😉
Источник
Copy File Contents Into Clipboard Without Displaying Them
This guide explains what is Clipboard, and how to copy file contents into Clipboard without displaying the contents of the file using any text viewer applications in Linux.
What is Clipboard?
You will definitely cut or copy and paste texts on your system multiple times a day. You may not have remembered how many times you copied something or haven’t ever thought about where the copied texts are actually stored. But, you should have copied/cut texts so many times. For those wondering, there is temporary place called «Clipboard» in an operating system. Clipboard is the place where the copied/cut data are kept temporarily.
Clipboard is a buffer used for short-term data storage. It is mainly used to transfer data within and between applications, via cut, copy and paste operations. Clipboard is usually temporary and unnamed place that resides in your Computer’s RAM.
The clipboards are called «Selections» and there are three types of clipboards available in X11 window system in Linux. They are:
- PRIMARY — This is normally used when copy/paste data using Mouse middle button.
- SECONDARY — It is not used used much, but exists.
- CLIPBOARD — This is used for explicit copy/paste commands via Keyboard using ctrl+c and ctrl+v keys and via menu items.
There are many tools exists to manipulate the contents of clipboards. They are known as clipboard mangers and monitors. In this guide, we will discuss two command line tools namely Xclip and Xsel that are used to access clipboard contents.
Now let us get back to our main topic. How do you copy the contents of a file without actually displaying the file contents using any external applications like nano , vi editors or commands like cat ? Before I know this method, I usually open the file or display the contents of the file in standard output and then copy its contents using Mouse or Ctrl+c keys from the Keyboard. But you can do this without displaying the contents. Read on to know how.
Please note that xclip and xclip are X11 utlities. They will only work on systems that has X window system installed.
Copy file contents into Clipboard without displaying its contents, using Xclip and Xsel programs in Linux
Make sure you have installed Xclip and Xsel programs on your Linux system. They both are available in the default repositories of most Linux distributions.
To install xclip and xsel on Arch Linux and its derivatives, run:
On Debian, Ubuntu, Linux Mint:
Now let us see how to copy a file contents using Xclip and Xsel programs. For the purpose of this guide, I use text file named ostechnix.txt and the contents of this file is given below:
To copy the contents of ostechnix.txt file into clipboard, without displaying its contents, run:
Or shortly use this:
Copy file Contents into Clipboard without displaying them using Xclip in Linux
Xclip has now copied the contents of ostechnix.txt file to the clipboard. You can paste the copied data to anywhere using Ctrl+p keys or selecting the paste option from menu items or right click context menu.
You can also copy the contents of a file into clipboard using Xsel command like below:
Or, shortly use this:
Copy file contents into Clipboard without displaying them using Xsel in Linux
To save a few strokes, you can create a script named «send2clip» with the following lines:
Use any name of your choice for this script. Then make the script executable:
Now pass any file as an argument to copy its contents to clipboard. For example, the following command will copy the contents of ostechnix.txt file:
Copy Linux and Unix commands output to clipboard
Not just the output of files, you can also send the output of any Linux and Unix commands to clipboard using Xclip and Xsel programs.
To copy a Linux command’s output into clipboard using Xclip and Xsel , run:
Example:
Copy Linux and Unix commands output into clipboard
The above commands will copy your Linux system Kernel details into clipboard.
To learn more about Xclip and Xsel commands, refer the man pages.
Источник
Linux console copy to clipboard
В данной статье разберем утилиту xclip, которая позволяет скопировать вывод любой команды или текст любого файла в буфер обмена в терминале Linux.
Этот абзац для тех, кто нашел эту статью в поисковой системе, чтобы узнать как просто копировать и вставлять текст в терминале Linux (в Ubuntu в частности), так как обычные сочетания клавиш CTRL — C и CTRL -V не работают. Для этих действий используются CTRL — SHIFT — C и CTR — SHIFT — V, соответсвтенно.
xclip — утилита для работы с буфером обмена из консоли.
Давайте её установим в Ubuntu:
Данной утилитой можно скопировать любой вывод команды или текст какого-либо файла, чтобы скопировать туда, куда нам нужно. Также сама утилита позволяет вставлять из буфера обмена в консоль.
Примеры использования xclip.
Давайте рассмотрим работу xclip на примерах.
Допустим, есть у нас публичный ключ ssh, который мы хотим скопировать и вставить в систему для доступа к ней без ввода пароля:
Не совсем удобно копировать данный текст в терминале, можно ошибиться в пробелах и тд. Поэтому, давайте воспользуемся xclip.
Чтобы скопировать в буфер обмена, перенаправляем вывод любой команды в xlip:
или короткая версия:
Если вы не знаете, что такое |, то это означает, что мы вывод первой команды перенаправляем на вход второй после |.
Для тех, кто хочет узнать про перенаправление потоков вывода, советую прочитать мою статью: Терминал Linux. Как сохранить в файл вывод терминала..
Теперь мы можем вставить скопированный текст куда захотим, к примеру, на сайте github:
Но мы можем просто скопировать в буфер обмена весь текстовый файл, для этого указываем команду xclip с ключом -in (-i):
или короткая версия:
С помощью данной утилиты мы можем и вставить текст в терминал из буфера обмена. Для этого нужно указать команду xclip вместе с ключом -out (-o):
или короткая версия:
Но, согласитесь, что не удобно постоянно набирать параметр -sel clip, который указывать на буфер обмена.
Давайте создадим постоянные алиасы для команды копирования и вставки:
Вставляем туда строки:
Если вы не знаете, что такое алиасы, то советую прочитать следующую статью: Терминал Linux. Создание alias (псевдонима) в Ubuntu..
Сохраняем файлик, и если переоткрыть терминал (открыть новую сессию терминала), то теперь можно использовать наши новые команды. Теперь, чтобы скопировать публичный ключ ssh, нам достаточно ввести следующую команду:
Псевдонимы pbcopy и pbpaste я использую, потому что я часто пользуюсь системой macosx и там есть команды с такими названиями. Вы можете назвать алиасы по вашему желанию.
Ну и вставить текст в терминале:
Ну и напоследок, хотелось продемонстрировать как еще можно пользоваться данной утилитой. К примеру, есть у нас файл лога, и мы хотим просмотреть его последние 10 строк:
И мы хотим скопировать его, чтобы кому-то отправить его, просто укажем нашу утилиту:
Источник
Буфер обмена в Linux (копирование и вставка)
Хочу рассказать о некоторых особенностях буфера обмена в Linux. О буфере копирования и про буфер выбора (первичный буфер), а также про копирование и вставку текста в терминале.
Буфер копирования
Стандартно для копирования и вставки объектов в Linux используются сочетания клавиш Ctrl+C и Ctrl+V. При копировании текст (или любой другой объект) в таком случае попадает в обычный буфер копирования. Затем вы можете вставить этот текст в другом месте.
Буфер выбора (первичный буфер)
В Linux существует еще буфер выбора или первичный буфер. Текст, который вы выделяете в любой программе, автоматически попадает в буфер обмена! Это удобно, выделил текст, открыл другое окно и вставил этот кусок текста. Есть некоторые исключения, но они незначительны. Например, у меня в Ubuntu это не работает, если программа использует JVM (Java Virtual Machine).
Кстати, именно этим объясняется следующие поведение. Вы выделили текст в программе, затем открыли другую программу и выделили какой-нибудь текст в ней. После этого, выделение текста в первой программе автоматически снимется, а текст который вы выделили последним, попадет в буфер выбора.
Копирование и вставка в терминале
В терминале для копирования и вставки не работают стандартные сочетания Ctrl+V, Ctrl+C. Это связано с тем, что исторически Ctrl+C это сочетание клавиш для прерывания текущего процесса. Поэтому, для копирования и вставки при работе в терминале используются сочетания Ctrl+Insert и Shift+Insert соответственно. В Gnome терминале и, наверное, во многих других также работают сочетания Shift+Ctrl+C и Shift+Ctrl+V. Они же указаны в главном меню программы в разделе Правка.
Также в терминале работают сочетания клавиш Ctrl+U, чтобы вырезать текст; и Ctrl+Y для вставки текста. Сочетание Ctrl+U работает особенным образом — в буфер копируется вся текущая строка, введенная в терминале, независимо от того, выбрали вы какой-нибудь текст мышкой или нет, а сама строка пропадает с экрана.
Источник