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

89

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

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

Strapakowsky
источник
Это действительно не похоже на дубликат для меня. Один из ответов касается общего копирования и вставки, а этот - о копировании конкретного файла
Ulysse BN

Ответы:

104

Когда вы нажимаете 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/sh
xclip -i -selection clipboard -t text/uri-list

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

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

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

Сергей
источник
Хорошо, но работает только для текста, и на самом деле это не файл, а текст. Предположим, у вас есть файл JPG?
Strapakowsky
Да, я знал, что если вы копируете файл из файлового менеджера, если вы вставляете его в другую папку, вы вставляете файл, но если вы вставляете текстовый редактор, вы получаете путь к файлу.
Strapakowsky
В случае бинарных файлов (jpg и т. Д.) Все гораздо сложнее. Здесь я задал вопрос, вдохновленный вашим - unix.stackexchange.com/questions/53503/… - прочитайте о «целевых атомах» и прочем
Сергей
1
Я слышал, что xclip также поддерживает копирование файлов с помощью xclip-copyfileи xclip-pastefile. Я действительно не использовал это хотя, но это могло бы быть решением.
Gladen
Вау, @Gladen, я думаю, тебе нужно опубликовать это как отдельный ответ. Хотя он работает xclip-copyfileи тогда xclip-pastefile, и тогда , но, похоже, не работает с файловым менеджером Ubuntu ...
Сергей
9

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

Gladen
источник
Это просто копирует имена файлов, а не содержимое файлов. Достаточно взглянуть на примеры на странице руководства, например,$ man xclip-copyfile
Крейг,
0

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'
Пенге Гэн
источник