Linux терминал буфер обмена

Буфер обмена в 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 работает особенным образом — в буфер копируется вся текущая строка, введенная в терминале, независимо от того, выбрали вы какой-нибудь текст мышкой или нет, а сама строка пропадает с экрана.

Источник

Работа с буфером обмена в 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. Этот маленький демон держит содержимое буфера обмена в памяти независимо от того, было ли закрыто приложение, из которого скопированы данные.

Читайте также:  После обновления bios не устанавливается windows

Для более комфортной работы с буфером обмена существует целый ряд программ:

  • 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 😉

Источник

Как скопировать и вставить текст в Bash Shell Linux

Хотите скопировать и вставить в командной строке оболочки Bash? Мы покажем вам несколько методов, предпочитаете ли вы клавиатуру или мышь. Они работают, будь вы на графическом рабочем столе или на традиционном текстовом TTY.

Обычные сочетания клавиш не будут работать

Копирование и вставка текста является неотъемлемой частью использования компьютера. Когда люди впервые используют компьютер с Linux, независимо от того, пришли они из мира Windows или macOS, они часто путаются, пытаясь скопировать и вставить в окно терминала.

В Windows вы используете Ctrl+C чтобы скопировать выделенный текст, и Ctrl+V чтобы вставить его. В macOS вы используете Command+C чтобы скопировать его, и Command+V чтобы вставить его. Они следуют тому же соглашению C для копирования и V для вставки.

Те же самые нажатия клавиш работают в большинстве графических приложений Linux, таких как редактор gedit или офисный пакет LibreOffice . Ctrl+C копирует выделенный текст, а Ctrl+V вставляет его в курсор. Наш новичок в Linux, вероятно, даже не думает о том, что эти соглашения были распространены на эти приложения. Они используют нажатия клавиш из мышечной памяти и продолжают свою работу.

Читайте также:  Astra linux какие пакеты использует

Как только наш новичок откроет окно терминала и попытается скопировать и вставить в командной строке Bash , все изменится. Ctrl+C и Ctrl+V были назначены функции задолго до того, как о них начали думать. Фактически, эти нажатия клавиш набирались задолго до того, как были изобретены графические оболочки, еще тогда, когда телетайп (TTY) был физической вещью.

Ctrl + C и Ctrl + V в TTY

Когда TTY был физическим устройством, Ctrl+C был выбран в качестве удобной комбинации клавиш для генерации сигнала. Этот сигнал — SIGINT , который указывает текущему процессу завершиться. Поскольку окно терминала представляет собой эмулируемый TTY, эта комбинация клавиш (и многие другие) были сохранены и реплицированы в эмуляции. Обратите внимание, что эмуляция — это окно терминала . Оболочка Bash — это программа, работающая в эмулируемом TTY.

Мы можем легко увидеть функции, которые были назначены для Ctrl+C и Ctrl+V Предположим, вы набрали следующую команду и нажали «Enter».

Поскольку мы используем опцию -R (рекурсивный), команда ls начнет перечислять все файлы и каталоги, начиная с корневого каталога. Через пару мгновений вы понимаете, что это не то, что вам нужно, поэтому вы завершаете процесс, нажимая Ctrl+C

Процесс ls завершен. Видимое свидетельство Ctrl+C выделено на скриншоте. Он отображается как ^C

Комбинация Ctrl+V вызывает «дословную вставку». Это позволяет вам ввести представление ключа в то, что вы печатаете, вместо того, чтобы получить эффект клавиши. Чтобы увидеть это, попробуйте следующие команды (не вводите запятые). (Например, чтобы попробовать первый, нажмите Ctrl + V, а затем нажмите Enter.)

Вкратце, вы можете заметить, что Enter представлен ^M Ранее мы видели, что Ctrl+C отображается как ^C Казалось бы, ^ представляет Ctrl . Так что Ctrl+M вероятно, означает то же самое, что и Enter. Означает ли это, что мы можем ввести Enter, набрав Ctrl+M ? Попробуйте это в окне терминала. Вы увидите, что это так.

Итак, очевидно, мы не можем ожидать, что Ctrl+C и Ctrl+V выполнят копирование и вставку текста, когда им уже назначены проверенные временем функции. Так что мы можем использовать?

Ctrl + Shift + C и Ctrl + Shift + V

Легко запомнить, потому что они очень похожи на своих коллег, Ctrl+Shift+C и Ctrl+Shift+V являются прямой заменой Ctrl+C и Ctrl+V

Если вы выделите текст в окне терминала с помощью мыши и нажмете Ctrl+Shift+C вы скопируете этот текст в буфер обмена.

Вы можете использовать Ctrl+Shift+V чтобы вставить скопированный текст в то же окно терминала или в другое окно терминала.

Вы также можете вставить в графическое приложение, такое как gedit . Но обратите внимание, когда вы вставляете в приложение, а не в окно терминала, вы должны использовать Ctrl+V

И вы можете пойти другим путем. Вы можете выделить текст в gedit и нажать Ctrl+C , а затем вставить его в окно терминала, используя Ctrl+Shift+V

Комбинация Ctrl+Insert такая же, как Ctrl+Shift+C , а комбинация Shift+Insert такая же, как Ctrl+Shift+V Предостережение заключается в том, что они могут использоваться только в одном терминальном окне.

Использование мыши: щелчок правой кнопкой мыши

Вы можете использовать мышь для копирования и вставки в окне терминала. Вы должны использовать мышь, чтобы выделить текст, который вы собираетесь скопировать, так почему бы не использовать его для выполнения операций копирования и вставки?

Как только вы выделите текст, щелкните правой кнопкой мыши и выберите «Копировать» в контекстном меню.

Чтобы вставить скопированный текст, щелкните правой кнопкой мыши еще раз и выберите «Вставить» в контекстном меню.

Текст вставляется в положение курсора в командной строке. В этом примере относительный путь указан неверно, и Bash не может изменить каталог. Пользователь пропустил «

/» с начала пути. Они набрали «

/», а затем скопировали остаток пути от предыдущей попытки и вставили его во вторую командную строку.

Когда они нажимают Enter, они перемещаются в каталог.

В этом примере показано вставка в одно и то же окно терминала, но вы можете использовать эту технику правой кнопкой мыши, чтобы вставить в разные окна терминала. Вы также можете вставить в графические приложения, используя этот метод.

Читайте также:  Что нужно знать для переустановки windows

Использование мыши: средняя кнопка

Существует еще более быстрый способ копирования и вставки с помощью мыши, если ваша мышь имеет среднюю кнопку. Если вы нажмете на колесо прокрутки (осторожно!), И оно щелкнет, у вас есть средняя кнопка.

Выделите текст в окне терминала и нажмите среднюю кнопку. Выделенный текст вставляется в позицию курсора в командной строке. Копирование и вставка происходят одновременно.

Итак, выделите текст:

Затем нажмите среднюю кнопку:

Вы можете использовать этот метод для вставки между окнами различных терминалов, а также в графические приложения. Просто выделите текст, перейдите в другое окно терминала или приложение и нажмите среднюю кнопку.

Старая школа — нет мыши

А когда у тебя нет мыши? Если вы не можете выделить какой-либо текст, как вы можете скопировать и вставить его?

Серверы Linux часто настраиваются без графической среды рабочего стола (GDE), а это означает, что у вас нет доступа к мыши. Даже на компьютере с Linux, на котором запущена графическая среда рабочего стола, такая как GNOME, и у вас есть мышь, будут случаи, когда вы не можете использовать мышь для выделения текста.

Например, вы могли поменяться местами с одним из дополнительных TTY. В современных дистрибутивах они расположены от Ctrl+Alt+F3 (TTY3) до Ctrl+Alt+F6 (TTY6). ( Ctrl+Alt+F2 вернет вас в сеанс GDE, а Ctrl+Alt+F1 откроет экран входа в GDE.)

Возможно, вы даже используете подлинное аппаратное устройство TTY для подключения к компьютеру с Linux или Unix.

В любом случае, эти методы будут работать для вас. Важно помнить, что это не копирование и вставка, это вырезание, копирование и вставка, и вы можете вырезать и копировать только из текущей командной строки. Конечно, вы можете использовать клавиши со стрелками для прокрутки вашей истории, чтобы найти командную строку, которую вы хотите вырезать, копировать и вставлять из.

Клавиши, которые вы можете использовать:

  • Ctrl + W : вырезать слово перед курсором и добавить его в буфер обмена.
  • Ctrl + K : вырезать часть строки после курсора и добавить ее в буфер обмена. Если курсор находится в начале строки, он обрежет и скопирует всю строку.
  • Ctrl + U : вырезать часть строки перед курсором и добавить ее в буфер обмена. Если курсор находится в конце строки, он обрежет и скопирует всю строку.
  • Ctrl + Y : вставить последний текст, который был вырезан и скопирован.

Давайте перейдем к TTY3. (Используйте Ctrl + Alt + F1, чтобы потом вернуться на рабочий стол.)

У нас есть файл, который мы хотим удалить, давайте проверим его здесь.

Если мы используем клавишу «Стрелка вверх», мы вызовем последнюю команду, которую мы использовали из истории команд. Мы могли бы просто отредактировать эту строку, но цель состоит в том, чтобы продемонстрировать вырезание, копирование и вставку, поэтому мы выполним нашу задачу по удалению файла слегка затяжным способом.

Мы переместим курсор на первую букву имени файла, а затем нажмите Ctrl+K Это удалит эту часть строки и скопирует текст в буфер обмена.

Мы будем нажимать клавишу Backspace, пока не очистим линию.

Мы введем rm для удаления файла.

И теперь мы можем нажать Ctrl+Y и вставить оставшуюся часть строки.

Это завершает нашу команду, и мы можем нажать Enter, чтобы удалить файл.

Этот тип вырезания, копирования и вставки нельзя использовать между дополнительными TTY. Например, вы не можете вырезать, копировать и вставлять между TTY3 и TTY4.

Дополнительные TTY лучше всего рассматривать как ряд физических TTY, сидящих рядом. Нет никакого способа вырезать и вставлять между различными физическими терминалами, и нет никакого способа сделать это в этих эмуляциях.

Скопируйте это, контроль

В какой бы ситуации вы ни находились при использовании компьютера с Linux, у вас будет возможность копировать и вставлять. У вас есть варианты. Некоторые из них странные варианты, но, по крайней мере, есть варианты.

Источник

Оцените статью