Який еквівалент командного рядка копіювання файлу в буфер обміну?


89

Який командний рядок еквівалентний натисканню CTRL + C над файлом у файловому менеджері, щоб файл (а не ім'я файлу) був скопійований у буфер обміну?

Наприклад, це може бути корисним і швидким, наприклад, коли ви хочете скопіювати у буфер обміну файл із каталогу, який ви перебуваєте в терміналі, щоб швидко вставити файл у каталог, який ви перебуваєте в файловому менеджері. Є й інші.


Це дійсно не схоже на дублікат. Одна відповідь стосується загальної папки для копіювання, а ця - про копіювання конкретного файлу
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?
Страпаковський

Так, я знав цей ефект, що якщо ви копіюєте файл з файлового менеджера, якщо вставляєте його в іншу папку, ви вставляєте файл, але якщо ви вставляєте його в текстовий редактор, ви отримуєте шлях до файлу.
Страпаковський

У випадку бінарних файлів (jpg тощо) все набагато складніше. Тут я поставив запитання, натхнене вашим - unix.stackexchange.com/questions/53503/… - прочитайте про "цілі атомів" та інше
Сергій

1
Я чув, що xclip також підтримує копіювання файлів за допомогою xclip-copyfileта xclip-pastefile. Я не дуже використовував це, хоча це може бути рішенням.
Гладен

Нічого собі, @Gladen, я думаю, що це потрібно опублікувати як окрему відповідь. Хоча це працює і під час використання, xclip-copyfileі тоді xclip-pastefile, але, здається, не працює з файловим менеджером Ubuntu ...
Сергій

9

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


Це просто копіює назви файлів, а не вміст файлів. Просто подивіться на приклади сторінки чоловіка, тобто$ 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'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.