Jaki jest odpowiednik wiersza polecenia kopiowania pliku do schowka?

89

Jaka jest linia poleceń odpowiadająca naciśnięciu klawiszy CTRL + C nad plikiem w menedżerze plików, aby plik (nie nazwa pliku) został skopiowany do schowka?

Sytuacja, w której może być to przydatne i szybkie, na przykład, gdy chcesz skopiować do schowka plik z katalogu, w którym znajduje się terminal, aby szybko wkleić plik do katalogu, w którym znajduje się menedżer plików. Są inni.

Strapakowsky
źródło
To naprawdę nie wygląda jak duplikat. Jedna odpowiedź dotyczy ogólnie ogólnego wklejania kopii, a ta dotyczy kopiowania określonego pliku
Ulysse BN

Odpowiedzi:

104

Gdy naciśniesz Ctrl-C nad plikiem w menedżerze plików, zawartość pliku NIE zostanie skopiowana do schowka. Prosty test: wybierz plik w menedżerze plików, naciśnij Ctrl-C, otwórz edytor tekstu, naciśnij Ctrl-V. Wynikiem nie jest zawartość pliku, ale pełna ścieżka.

W rzeczywistości sytuacja jest nieco bardziej skomplikowana, ponieważ nie można zrobić odwrotnie - skopiuj listę nazw plików z edytora tekstu i wklej je do menedżera plików.

Aby skopiować niektóre dane z wiersza poleceń do schowka X11, możesz użyć xclippolecenia, które można zainstalować za pomocą

sudo apt-get install xclip

do skopiowania zawartości pliku lub wyniku niektórych poleceń do schowka

cat ./myfile.txt|xclip -i

tekst można następnie wkleić gdzieś za pomocą środkowego przycisku myszy (nazywa się to „głównym buforem wyboru”).

Jeśli chcesz skopiować dane do zaznaczenia „Schowek”, aby można je było wkleić do aplikacji za pomocą Ctrl-V, możesz to zrobić

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

Aby móc skopiować pliki z wiersza polecenia i wkleić je w menedżerze plików, musisz określić poprawny „docelowy atom”, aby menedżer plików rozpoznał dane w schowku, a także dostarczył dane w odpowiednim formacie - na szczęście w przypadku kopiowania plików w menedżerze plików jest to tylko lista bezwzględnych nazw plików, każdy w nowym wierszu, co można łatwo wygenerować za pomocą findpolecenia:

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

(przynajmniej działa to dla mnie w KDE). Teraz możesz owinąć mały skrypt, który możesz wywołać, powiedzmy cb:

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

następnie wstawiasz go ~/bin, ustawiasz na nim bit wykonywalny i używasz go w następujący sposób:

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

Fajnie, prawda?

Siergiej
źródło
Fajnie, ale działa tylko na tekst i tak naprawdę nie jest to plik, tylko tekst. Załóżmy, że masz plik jpg?
Strapakowsky
Tak, znałem ten efekt, że jeśli skopiujesz plik z menedżera plików, jeśli wkleisz go w innym folderze, wkleisz plik, ale jeśli wkleisz w edytorze tekstu, otrzymasz ścieżkę do pliku.
Strapakowsky
W przypadku plików binarnych (jpg itp.) Wszystko jest znacznie bardziej skomplikowane. Tutaj zadałem pytanie zainspirowane twoim - unix.stackexchange.com/questions/53503/... - przeczytałem o „atomach docelowych” i tym podobne
Sergey
1
Słyszałem, że xclip obsługuje również kopiowanie plików za pomocą xclip-copyfilei xclip-pastefile. Jednak tak naprawdę go nie użyłem, ale może to być rozwiązanie.
Gladen,
Wow, @Gladen, myślę, że musisz to opublikować jako osobną odpowiedź. Mimo, że działa przy stosowaniu xclip-copyfilei wtedy xclip-pastefile, ale nie wydają się działać z menedżera plików Ubuntu ...
Sergey
9

Słyszałem, że xclip obsługuje również kopiowanie plików za pomocą xclip-copyfilei xclip-pastefile. Jednak tak naprawdę go nie użyłem, ale może to być rozwiązanie.

Gladen
źródło
To tylko kopiuje nazwy plików, a nie ich zawartość. Wystarczy spojrzeć na przykłady stron podręcznika, tj.$ man xclip-copyfile
Craig
0

Mac OS ma pbcopyłatwiejszą składnię:

pbcopy < ~/.ssh/id_rsa.pub 

lub

cat ~/.ssh/id_rsa.pub  | pbcopy

Aby przeprowadzić symulację pbcopyw systemie Ubuntu za pomocą xclip(zainstalowanego przez sudo apt install xclip):

alias pbcopy='xclip -selection clipboard'
alias pbpaste='xclip -selection clipboard -o'
Penghe Geng
źródło