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

Когда вы нажимаете 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

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