Найти в Дзене

Копирование и вставка прямо в терминале Linux

Обычные пользователи привыкли использовать функции копирования и вставки при использовании графических оболочек дистрибутива (сред рабочего стола или тайлинговых оконных менеджеров). Для системных администраторов и тех, кто работает с серверами на Линукс есть альтернативный вариант работы с буфером обмена - утилиты xclip и xsel. Поговорим сегодня про них и коснемся основных сценариев использования этих инструментов. Самое время подписаться на обновления канала Просто Код и иметь доступ к качественным, полезным и интересным материалам про Linux и Opensource. Мы с тобой одной крови Прежде чем перейти к непосредственно содержанию поста стоит упомянуть про то, что в macOS есть утилиты аналогичные тем, про которые мы будем говорить дальше. Ну или утилиты в Linux аналогичны тем, которые есть в macOS - здесь можно посмотреть с разных сторон, сути это не меняет. «Яблочные» пользователи могут пользоваться командами pbcopy и pbpaste, которые позволяют работать с буфером обмена через терминал. Но
Оглавление

Обычные пользователи привыкли использовать функции копирования и вставки при использовании графических оболочек дистрибутива (сред рабочего стола или тайлинговых оконных менеджеров). Для системных администраторов и тех, кто работает с серверами на Линукс есть альтернативный вариант работы с буфером обмена - утилиты xclip и xsel. Поговорим сегодня про них и коснемся основных сценариев использования этих инструментов.

Самое время подписаться на обновления канала Просто Код и иметь доступ к качественным, полезным и интересным материалам про Linux и Opensource.

Мы с тобой одной крови

Прежде чем перейти к непосредственно содержанию поста стоит упомянуть про то, что в macOS есть утилиты аналогичные тем, про которые мы будем говорить дальше. Ну или утилиты в Linux аналогичны тем, которые есть в macOS - здесь можно посмотреть с разных сторон, сути это не меняет. «Яблочные» пользователи могут пользоваться командами pbcopy и pbpaste, которые позволяют работать с буфером обмена через терминал. Но несмотря на то, что macOS и Linux принадлежат к одному семейству операционных систем, «линуксоидам» pbcopy и pbpaste недоступны. Это довольно странно, так как можно было сделать прямое копирование тех утилит, которые работают с терминалом, как это произошло со многими другими командами и утилитами, одинаково работающими в обеих системах.

Установка xclip и xsel

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

  • Debian/Ubuntu/Linux Mint

sudo apt install xclip xsel

  • Fedora

sudo dnf install xclip xsel

  • Archlinux

sudo pacman -S xclip xsel

Так как я для примера использую рабочий дистрибутив Archlinux с BSPWM на борту, то xclip уже был установлен.

-2

Использование утилит

Чтобы работать с буфером обмена из терминала при помощи xclip нужно использовать следующие команды:

xclip -selection clipboard - копирование

xclip -selection clipboard -o - вставка

Если вы выбрали xsel, то команды будут выглядеть так:

xsel --clipboard --input - копирование

xsel --clipboard --output - вставка

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

У меня оболочка ZSH, потому для добавления алиаса необходимо отредактировать файл .zshrc, который находится в домашней папке пользователя. Для простоты использования я воспользуюсь названиями аналогичных утилит из macOS - pbcopy и pbpaste:

alias pbcoby="xclip -selection clipboard"

alias pbpaste="xclip -selection clipboard -o"

или

alias pbcopy="xsel --clipboard --input"

alias pbpaste="xsel --clipboard --output"

Сохраняем конфигурационный файл и перезапускаем оболочку:

exec zsh

-3

Про то, как установить ZSH на свой дистрибутив и предварительно настроить ее я рассказывал в заметке, которую вы найдете по ссылке ниже.

Сценарии использования

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

Восстановление прежнего содержимого файла

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

pbcoby < <имя_файла>

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

pbpaste > <имя_файла>

-4

Отправка «выхлопа» команды в буфер обмена

Иногда необходимо поделиться с кем-либо «выхлопом» команды или сохранить его для последующего сравнения. В таких случаях можно воспользоваться нашими алиасами и символом | («труба»). Например, давайте сохраним информацию об имеющихся в системе сетевых интерфейсах и IP-адресах:

ip a | pbcopy

Затем вставим «выхлоп» команды в какой-нибудь текстовый файл при помощи уже знакомого нам способа:

pbpaste > <имя_файла>

-5

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

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