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: теория и практика

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