Как передать стандартный вывод терминала (stdout) в буфер обмена?
Например,
Скажем, я хочу перечислить содержимое папки и напрямую вставить ее в окно чата, чтобы его увидел друг.
Я понимаю, что мог сделать ls > filename.txt
создать файл (filename.txt) с этим содержимым; Затем мне пришлось бы открыть или распечатать файл и вручную выбрать и скопировать текстовый блок (что может раздражать / утомительно). Я также мог бы выбрать и скопировать вывод ls
прямо из окна терминала.
Было бы намного быстрее / проще просто передать стандартный вывод в буфер обмена.
Какая команда терминала позволяет мне сделать это?
6 ответов
Это можно сделать с помощью xsel или 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
переключатель необходим, чтобы избежать появления новой строки после вставки.