Каков эквивалент копирования файла в буфер обмена в командной строке?

Какая командная строка эквивалентна нажатию CTRL +C над файлом в файловом менеджере, чтобы файл (а не имя файла) был скопирован в буфер обмена?

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

Когда вы нажимаете Ctrl-C над файлом в файловом менеджере, содержимое файла НЕ копируется в буфер обмена. Простой тест: выберите файл в файловом менеджере, нажмите Ctrl-C, откройте текстовый редактор, нажмите Ctrl-V. Результатом является не содержимое файла, а его полный путь.

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

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

sudo apt-get install xclip

для копирования содержимое файла или вывод какой-либо команды в буфер обмена с использованием

cat ./myfile.txt|xclip -i

затем текст можно вставить куда-нибудь с помощью средней кнопки мыши (это называется "основной буфер выделения").

Если вы хотите скопировать данные в выделенный "буфер обмена", чтобы их можно было вставить в приложение с помощью Ctrl-V, вы можете сделать

cat ./myfile.txt|xclip -i -selection clipboard

Чтобы иметь возможность копировать файлы из командной строки и вставьте их в файловый менеджер, вам нужно указать правильный "целевой атом", чтобы файловый менеджер распознал данные в буфере обмена, а также предоставил данные в правильном формате - к счастью, в случае копирования файлов в файловый менеджер это просто список абсолютных имена файлов, каждое в новой строке, что-то, что легко сгенерировать с помощью find команда:

find ${PWD} -name "*.pdf"| xclip -i -selection clipboard -t text/uri-list

(по крайней мере, это работает для меня в KDE). Теперь вы можете обернуть в небольшой скрипт, который вы можете вызвать, скажем, cb:

#!/bin/shxclip -i -selection clipboard -t text/uri-list

затем вы кладете его в ~/bin, установите на него исполняемый бит и используйте его следующим образом:

find ${PWD} -name "*.txt"| cb

Мило, не правда ли?

Я слышал, что xclip также поддерживает копирование файлов с помощью xclip-copyfile и xclip-pastefile. Хотя на самом деле я им не пользовался, но это может быть решением проблемы.

Mac OS имеет pbcopy с более простым синтаксисом:

pbcopy < ~/.ssh/id_rsa.pub 

или

cat ~/.ssh/id_rsa.pub  | pbcopy

Для имитации pbcopy на Ubuntu с xclip (устанавливается через sudo apt install xclip):

alias pbcopy='xclip -selection clipboard'alias pbpaste='xclip -selection clipboard -o'

Не удалось заставить вышеуказанные решения работать 21.04, приземлился на этом.

  • sudo apt install xclip -y
  • cat path/to/file|xclip -selection clipboard
  • вставить

Как насчет того, когда полная Ubuntu без графического интерфейса используется через ssh из приложения терминала macOS или аналога?

Для меня это действительно не похоже на дубликат. Один ответ касается общей копипасты в целом, а этот - о ** копировании файла ** конкретной темы