Как передать стандартный вывод терминала (stdout) в буфер обмена?

Например,

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

Я понимаю, что мог сделать ls > filename.txt создать файл (filename.txt) с этим содержимым; Затем мне пришлось бы открыть или распечатать файл и вручную выбрать и скопировать текстовый блок (что может раздражать / утомительно). Я также мог бы выбрать и скопировать вывод ls прямо из окна терминала.

Было бы намного быстрее / проще просто передать стандартный вывод в буфер обмена.

Какая команда терминала позволяет мне сделать это?

6 ответов

Решение

Это можно сделать с помощью xsel Установить xsel или xclip Установите xclip утилиты командной строки. Поскольку ни одна из программ не поставляется с Ubuntu по умолчанию, вам необходимо сначала установить их через Центр программного обеспечения или через терминал. Вот как в терминале (но помните, вам нужен только один из этих двух.)

sudo apt install xsel
sudo apt install xclip

Теперь несколько примеров. Если вы хотите скопировать вывод ls в буфер обмена вот что вы будете делать:

С помощью xsel:

ls | xsel -ib

С помощью xclip:

ls | xclip -sel clip

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

С помощью xsel:

sudo lshw -C network | xsel -ib

С помощью xclip:

sudo lshw -C network | xclip -sel clip

Сделайте это еще проще с новым псевдонимом bash!

Отредактируйте свой ~/.bash_aliases файл (если он еще не существует, сначала создайте его с помощью touch ~/.bash_aliases)

Затем добавьте одну (в зависимости от того, с какой программой вы решили пойти) следующее:

alias copy='xclip -sel clip'

или же

alias copy='xsel -ib'

Затем сохраните и закройте.

Теперь (после перезапуска вашего терминала) вы можете отправить стандартный вывод в буфер обмена, просто отправив его в "копию" (или как вы решите назвать свой новый псевдоним)

Например:

ls | copy

Если вы пытаетесь скопировать в буфер обмена с помощью Ubuntu в Windows Subsystem for Linux (WSL), xsel или xclip не будут работать, если вы не используете X Windows, поскольку буфер обмена предназначен только для графического интерфейса. Однако, чтобы передать стандартный вывод терминала в буфер обмена в WSL Ubuntu, вы можете использовать clip.exe, Затем вы можете вставить в терминал WSL Ubuntu стандартные команды вставки, и скопированный текст будет доступен и в Windows. Например,

pwd | clip.exe 

скопирует текущий рабочий каталог в буфер обмена (Windows).

Этот результат поиска появляется вверху при поиске способов копирования / вставки текста в WSL, поэтому я думаю, что стоит упомянуть об этом, чтобы читатели не устанавливали xsel или xclip в Ubuntu без необходимости и вместо этого использовали clip.exe,

Нашел это полезным для использования xclipутилита в дополнение к ответам выше. (источник)

Чтобы вставить (из системного буфера обмена):

xclip -out -sel clip

Демо:

$ echo hello world | xclip -sel clip             copy hello world to clipboard
$ xclip -out -sel clip | tail -f                 can pipe from clipboard
hello world
$ xclip -out -sel clip                           paste defaults to stdout
И поэтому я добавил это в свой профиль оболочки:
alias copy="xclip -sel clip"
alias paste="xclip -out -sel clip"

Для более поздних версий Ubuntu с Waylandwl-copyСделаю. Чтобы установить его, запустите:

      sudo apt install wl-clipboard

Пример использования:

      ls | wl-copy

Я нашел это решение, которое, как мне кажется, проще и легче запомнить:

      pwd | clipcopy

Вы также можете использовать его для копирования других вещей:

      ifconfig | clipcopy
echo $PATH | clipcopy
neofetch | clipcopy

Вам не нужно передавать какие-либо другие параметры, они копируются непосредственно в буфер обмена. Надеюсь, ты чему-то научился :D

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

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

realpath filename | xclip -r -selection c

The -rпереключатель необходим, чтобы избежать появления новой строки после вставки.

Другие вопросы по тегам