TGViewer
LinuxCamp | DevOps LinuxCamp | DevOps @linuxcamp_tg · 13.6K subscribers
Post #185 7.49K
Копирование и вставка "по уму"

Вы наверняка умеете работать с копированием и вставкой через сочетания клавиш: Ctrl + C, Ctrl + V.

Но знаете ли вы, что можете более эффективно обрабатывать содержимое буфера обмена прямо из командной строки?

Буфер обмена — это общее название для блока памяти, в котором временно находится скопированная информация.

Большинство X11 окружений рабочего стола поддерживают два варианта буфера:

1. Системный буфер обмена (clipboard). Когда вы выполняете операции "cut/copy" через горячие клавиши, содержимое попадает в этот буфер. После вставки информация извлекается.

2. Первичный буфер обмена (primary selection). Запись происходит, когда вы мышью выделяете текст в определенных приложениях. Для извлечения используется нажатие на колесо.

Если у кого в наличии только тачпадам, следует одновременно нажать левую и правую кнопки для вставки текста.

Обычно эти буферы не связаны и хранящиеся в них данные не влияют друг на друга. Записываем что-то в clipboard, primary selection остается нетронутым.

Подключение буферов к потокам

В Linux есть команда xclip, которая соединяет X-буферы обмена с потоками stdin и stdout.

Благодаря ей можно заполнять буферы информацией либо извлекать ее через конвейер и перенаправление файла.

По умолчанию команда читает stdout и записывает его в первичный буфер:


$ xclip < myfile.txt
$ echo "Some cool text" | xclip



Теперь выведем текст в stdout, перенаправим его в файл и передадим команде wc:


$ xclip -o
Some cool text

$ xclip -o > file.txt
$ xclip -o | wc -w
3


Очистим первичный буфер обмена, поместив в него пустую строку:


$ echo -n | xclip


Параметр "-n" важен, так как в противном случае echo выведет в stdout символ новой строки "\n", который окажется в первичном буфере обмена.

Команда поддерживает явное указание буфера. Чтобы скопировать текст в системный буфер обмена вместо первичного, запустим xclip с параметром "-selection clipboard":


$ ls | grep scr | xclip -selection clipboard

$ xclip -selection clipboard -o
script.sh


Теперь вы можете либо использовать комбинации клавиш для вывода либо просто флаг "-o".

При необходимости параметры xclip могут быть сокращены "-selection clipboard == -sel c"

Немного практики

Чтобы дополнительно облегчить себе жизнь, можно создать на xclip несколько алиасов:


$ alias ccopy="xclip -sel c"
$ alias cpaste="xclip -sel c -o"


Теперь, допустим, нам нужно установить определенный deb пакет, предварительно определив его среди общей массы:


$ ls ~/Downloads | grep code
code_1.96.4-1736994636_arm64.deb


Отлично, копируем название в буфер, затем выполняем вставку после целевой команды:


$ ls ~/Downloads | grep code | ccopy

$ sudo dpkg -i ~/Downloads/$(cpaste)


LinuxCamp
  • 👍 46
  • 🔥 16
  • ❤‍🔥 3
  • ❤ 3
  • 🤷‍♂ 1
  • 👏 1
More from @linuxcamp_tg
  1. Sep 28, 2026Проекту GNU вчера исполнилось 43 года 1983 год: Ричард Столлман объявил планы разработать…
  2. Sep 25, 2026Linux будет работать на ноутах с Snapdragon X2. Qualcomm добавляет полноценную поддержку L…
  3. Sep 24, 2026Так все по делу)) Советует же самый быстрый фикс LinuxCamp | #memes
  4. Sep 23, 2026Планы на 3 октября — прийти на RWB Infra x Security Meetup Мы направим прожекторы на инфра…
  5. Sep 22, 2026Ещё одна рекордная неделя для AI-разработки в Linux. На прошлой неделе в ядро попало 1 634…
  6. Sep 17, 2026Открыл плейлист, а как выйти - непонятно 😁 LinuxCamp | #memes
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →