Was ist die Befehlszeile zum Kopieren einer Datei in die Zwischenablage?

89

Was ist die Befehlszeile, die dem Drücken von STRG + C über eine Datei im Dateimanager entspricht, damit die Datei (nicht der Dateiname) in die Zwischenablage kopiert wird?

Eine Situation, in der dies nützlich und schnell sein kann, ist beispielsweise, wenn Sie eine Datei aus dem Verzeichnis, in dem Sie sich im Terminal befinden, in die Zwischenablage kopieren möchten, um die Datei schnell in das Verzeichnis einzufügen, in dem Sie sich im Dateimanager befinden. Da sind andere.

Strapakowsky
quelle
Das sieht für mich wirklich nicht nach einem Duplikat aus. Bei einer Antwort geht es um allgemeines Kopieren und Einfügen, und bei dieser handelt es sich um das Kopieren eines dateispezifischen Themas
Ulysse BN,

Antworten:

104

Wenn Sie im Dateimanager Strg-C über eine Datei drücken, wird der Inhalt der Datei NICHT in die Zwischenablage kopiert. Ein einfacher Test: Wählen Sie eine Datei im Dateimanager aus, drücken Sie Strg-C, öffnen Sie einen Texteditor und drücken Sie Strg-V. Das Ergebnis ist nicht der Inhalt der Datei, sondern der vollständige Pfad.

In Wirklichkeit ist die Situation etwas komplizierter, weil Sie nicht das Gegenteil tun können - kopieren Sie eine Liste von Dateinamen aus einem Texteditor und fügen Sie sie in den Dateimanager ein.

Um einige Daten von der Befehlszeile in die X11-Zwischenablage zu kopieren xclip, können Sie den Befehl verwenden, mit dem installiert werden kann

sudo apt-get install xclip

um den Inhalt einer Datei oder die Ausgabe eines Befehls in die Zwischenablage zu kopieren

cat ./myfile.txt|xclip -i

Der Text kann dann irgendwo mit der mittleren Maustaste eingefügt werden (dies wird als "primärer Auswahlpuffer" bezeichnet).

Wenn Sie Daten in die "Zwischenablage" kopieren möchten, um sie mit Strg-V in eine Anwendung einzufügen, können Sie dies tun

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

Um Dateien von der Befehlszeile kopieren und in einen Dateimanager einfügen zu können, müssen Sie ein korrektes "Zielatom" angeben, damit der Dateimanager die Daten in der Zwischenablage erkennt und sie auch im richtigen Format bereitstellt. Beim Kopieren von Dateien in einem Dateimanager handelt es sich lediglich um eine Liste absoluter Dateinamen, die jeweils in einer neuen Zeile stehen. Diese Liste lässt sich einfach mit dem findBefehl generieren :

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

(zumindest funktioniert das bei mir in KDE). Jetzt können Sie in ein kleines Skript einbinden, das Sie beispielsweise folgendermaßen aufrufen können cb:

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

dann legst du es hinein ~/bin, setzt das ausführbare Bit drauf und benutzt es wie folgt:

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

Schön, nicht wahr?

Sergey
quelle
Schön, funktioniert aber nur für Text und es ist nicht die Datei, sondern nur der Text. Angenommen, Sie haben eine JPG-Datei?
Strapakowsky
Ja, ich kannte diesen Effekt, wenn Sie eine Datei aus dem Dateimanager kopieren, wenn Sie sie in einen anderen Ordner einfügen, fügen Sie die Datei ein, aber wenn Sie sie in einen Texteditor einfügen, erhalten Sie den Dateipfad.
Strapakowsky
Bei Binärdateien (jpg etc.) ist alles viel komplizierter. Hier habe ich eine von Ihnen inspirierte Frage gestellt - unix.stackexchange.com/questions/53503/… - über " Zielatome " und so weiter gelesen
Sergey
1
Ich habe gehört, dass xclip auch das Kopieren von Dateien mit xclip-copyfileund unterstützt xclip-pastefile. Ich habe es zwar nicht wirklich benutzt, aber es könnte eine Lösung sein.
Gladen
Wow, @Gladen, ich denke du musst es als separate Antwort posten. Es funktioniert zwar bei der Verwendung xclip-copyfileund dann xclip-pastefile, scheint aber nicht mit Ubuntu-Dateimanager zu funktionieren ...
Sergey
9

Ich habe gehört, dass xclip auch das Kopieren von Dateien mit xclip-copyfileund unterstützt xclip-pastefile. Ich habe es zwar nicht wirklich benutzt, aber es könnte eine Lösung sein.

Gladen
quelle
Das kopiert nur die Dateinamen, nicht den Inhalt der Dateien. Schauen Sie sich einfach die Manpage-Beispiele an, z. B.$ man xclip-copyfile
Craig,
0

Mac OS hat pbcopymit einfacher Syntax:

pbcopy < ~/.ssh/id_rsa.pub 

oder

cat ~/.ssh/id_rsa.pub  | pbcopy

So simulieren Sie pbcopyunter Ubuntu mit xclip(installiert über sudo apt install xclip):

alias pbcopy='xclip -selection clipboard'
alias pbpaste='xclip -selection clipboard -o'
Penghe Geng
quelle