Перейти к содержимому

Как скопировать содержимое файла в буфер обмена linux

  • автор:

Copying text from a terminal (Русский)

Состояние перевода: На этой странице представлен перевод статьи Copying text from a terminal. Дата последней синхронизации: 26 января 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Большинство современных эмуляторов терминала позволяют пользователям копировать или сохранять их содержимое.

Общий подход

В графических эмуляторах терминалов содержимое обычно выделяется с помощью мыши и может быть скопировано с помощью контекстного меню, меню Правка или комбинации клавиш, например Ctrl+Shift+C .

Терминалы без поддержки CLIPBOARD

Xorg

Некоторые эмуляторы не поддерживают буфера CLIPBOARD нативно и копируют данные в буфер PRIMARY. Для них можно использовать xclip :

$ xclip -o | xclip -selection clipboard -i

Эта команда читает данные из буфера PRIMARY и записывает в буфер CLIPBOARD.

Некоторые менеджеры буфера обмена (например autocutsel ) предоставляют автоматическую синхронизацию между этими двумя буферами.

Перехват вывода команды

Команда tee позволяет скопировать вывод команды в файл.

$ команда 2>&1 | tee файл-для-вывода 

Получение вывода Linux-терминала

Прочитать буфер вывода нативного терминала /dev/ttyN можно в соответствующем файле /dev/vcsN . Например, сохранить содержимое терминала /dev/tty1 в файл можно так:

# cat /dev/vcs1 >файл-для-вывода 

Сравнение популярных эмуляторов терминала

The factual accuracy of this article or section is disputed.

Сочетание клавиш для копирования у большинства терминалов Ctrl+Shift+c , если не указано иное.

Эмулятор Выделение в PRIMARY CLIPBOARD
Сочетание клавиш Контекстное меню Меню окна Выделение
Alacritty Да Да Нет Нет Нет
aterm AUR Да Нет Нет Нет Нет
eterm AUR Да Нет Нет Нет Нет
germinal AUR Да Да Да Нет Нет
Guake Да Да Да Нет Нет
Konsole Да Да Да Да Опционально
lilyterm-git AUR Да Да Ctrl+Delete Да Нет Нет
lxterminal Да Да Да Да Нет
mate-terminal Да Да Да Да Нет
mlterm AUR Да Да Нет Нет Да
pantheon-terminal Да Да Да Нет Нет
PuTTY Да Нет Нет Нет Нет
qterminal Да Да Да Да Нет
roxterm AUR Да Да Да Да Нет
rxvt AUR [ссылка недействительна: package not found] Да Нет Нет Нет Нет
sakura AUR Да Да Да Да Нет
st Да Да Нет Нет Нет
Terminator Да Да Да Нет Нет
terminology Да Да Да Нет Нет
Termite Да Да Нет Нет Нет
Tilda Да Да Да Нет Нет
urxvt Да Да Ctrl+Alt+c Нет Нет Опционально
xfce4-terminal Да Да Да Да Нет
xterm Да Опционально[1] Нет Нет Да
Yakuake Да Да Да Нет Опционально

Особые случаи

putty

Подход xclip работает и для putty: нужно только помнить, что вызов xclip должен быть выполнен на локальном компьютере (в другом терминале), а не на удалённой машине, к которой подключен putty.

urxvt

Для выделения текста в CLIPBOARD требуется perl-расширение selection-to-clipboard. Подробнее смотрите rxvt-unicode (Русский)#Вырезать и вставить.

xterm

Доступ к буферу CLIPBOARD в xterm требует дополнительных шагов.

mlterm

В дополнение к Ctrl+Shift+c также доступно сочетание клавиш Ctrl+Insert , если вы не хотите случайно завершить процесс.

  • Pages or sections flagged with Template:Accuracy
  • Pages with broken package links

Копирование файла в буфер обмена из консоли на сервере без иксов

Буфер обмена — чисто иксовая примочка, AFAIK. Без иксов у тебя есть простой текстовый буфер обмена — запусти gpm и посмотри. Можешь файл в base64 перегнать, а потом туда. Но зачем?

CYB3R ★★★★★
( 01.03.12 18:54:01 MSK )
Ответ на: комментарий от ksevelyar 01.03.12 16:16:11 MSK

Я хочу скопировать ключ и добавить его на Гитхаб.

Linux и Android

Вопрос: у меня есть достаточно большой текстовый файл. Я хотел бы скопировать все содержимое файла и вставить его где-нибудь еще. Можно ли скопировать содержимое файла в буфер обмена, не открывая его? В оконной системе X windows system буфер обмена — это механизм для передачи данных из одного окна в другое, или для совместного использования данных несколькими приложениями. Обычно для выделения и копирования текста используется мышь.

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

Установка xclip в Linux

Для установки xcilp в Ubuntu, Debian или Linux Mint введите:

$ sudo apt-get install xclip

Для установки xclip в Fedora или RHEL введите:

Работа с буфером обмена в Linux: теория и практика

Copy and Paste

Исторически сложилось так, что в 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.

Скрипты

Я предлагаю два скрипта, которые смогут облегчить вашу повседневную работу. Первый скрипт:

Update 2: по просьбе хабраюзера dimaka добавил скрипты для перевода:

Update 3: Добавление пункта «копировать полный путь текущего файла» в меню Midnight Commander (Добавить в файл ~/.mc/menu):

+ ! t t
f Copy full filename into clipboard
echo -n %d/%f | xclip

_________
Текст подготовлен в редакторе VIM 😉

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *