Quel est l'équivalent en ligne de commande de la copie d'un fichier dans le Presse-papiers?

89

Quelle est la ligne de commande équivalente à la pression de CTRL + C sur un fichier du gestionnaire de fichiers pour que le fichier (et non le nom de fichier) soit copié dans le Presse-papiers?

Cela peut être utile et rapide, par exemple, lorsque vous souhaitez copier dans le Presse-papiers un fichier du répertoire où vous vous trouvez dans le terminal afin de le coller rapidement dans le répertoire situé dans le gestionnaire de fichiers. Il y en a d'autres.

Strapakowsky
la source
Cela ne ressemble vraiment pas à un duplicata pour moi. Une réponse concerne le copier / coller en général, et celle-ci concerne la copie d'un sujet spécifique à un fichier
Ulysse BN

Réponses:

104

Lorsque vous appuyez sur Ctrl-C sur un fichier dans le gestionnaire de fichiers, le contenu du fichier N'EST PAS copié dans le Presse-papiers. Un test simple: sélectionnez un fichier dans le gestionnaire de fichiers, appuyez sur Ctrl-C, ouvrez un éditeur de texte, appuyez sur Ctrl-V. Le résultat n'est pas le contenu du fichier mais son chemin complet.

En réalité, la situation est un peu plus compliquée, car vous ne pouvez pas faire le contraire: copier une liste de noms de fichiers depuis un éditeur de texte et les coller dans le gestionnaire de fichiers.

Pour copier des données de la ligne de commande vers le presse-papiers X11, vous pouvez utiliser la xclipcommande, qui peut être installée avec

sudo apt-get install xclip

copier le contenu d'un fichier ou la sortie d'une commande dans le presse-papier

cat ./myfile.txt|xclip -i

le texte peut ensuite être collé quelque part à l'aide du bouton central de la souris (appelé "tampon de sélection primaire").

Si vous souhaitez copier des données dans la sélection "Presse-papiers" afin de pouvoir les coller dans une application avec Ctrl-V, vous pouvez le faire.

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

Pour pouvoir copier des fichiers à partir de la ligne de commande et les coller dans un gestionnaire de fichiers, vous devez spécifier un "atome cible" correct afin que le gestionnaire de fichiers reconnaisse les données dans le Presse-papiers et fournisse également les données au format correct. Heureusement, en cas de copie de fichiers dans un gestionnaire de fichiers, il ne s'agit que d'une liste de noms de fichiers absolus, chacun sur une nouvelle ligne, ce qui est facile à générer à l'aide de la findcommande:

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

(au moins, cela fonctionne pour moi dans KDE). Vous pouvez maintenant envelopper un petit script que vous pouvez appeler, par exemple cb:

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

alors vous le mettez dedans ~/bin, placez le bit exécutable dessus et utilisez-le comme ceci:

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

Nice, n'est ce pas?

Sergey
la source
Sympa, mais ne fonctionne que pour le texte et ce n'est pas vraiment le fichier, mais juste le texte. Supposons que vous ayez un fichier jpg?
Strapakowsky
Oui, je savais que si vous copiez un fichier à partir du gestionnaire de fichiers si vous le collez dans un autre dossier, vous collez le fichier, mais si vous collez dans un éditeur de texte, vous obtenez le chemin du fichier.
Strapakowsky
Dans le cas de fichiers binaires (jpg, etc.), tout est beaucoup plus compliqué. Ici, j'ai posé une question inspirée par la vôtre - unix.stackexchange.com/questions/53503/… - à lire sur les "atomes cibles" et d'autres choses
Sergey
1
J'ai entendu dire que xclip prend également en charge la copie de fichiers avec xclip-copyfileet xclip-pastefile. Je ne l'ai pas vraiment utilisée cependant, mais cela pourrait être une solution.
Gladen
Wow, @Gladen, je pense que vous devez l'afficher séparément. Bien que cela fonctionne lors de l'utilisation xclip-copyfileet ensuite xclip-pastefile, mais ne semble pas fonctionner avec le gestionnaire de fichiers Ubuntu ...
Sergey
9

J'ai entendu dire que xclip prend également en charge la copie de fichiers avec xclip-copyfileet xclip-pastefile. Je ne l'ai pas vraiment utilisée cependant, mais cela pourrait être une solution.

Gladen
la source
Cela ne fait que copier les noms de fichiers, pas le contenu des fichiers. Jetez un coup d’œil aux exemples de pages de manuel, c’est$ man xclip-copyfile
Craig
0

Mac OS a pbcopyune syntaxe plus simple:

pbcopy < ~/.ssh/id_rsa.pub 

ou

cat ~/.ssh/id_rsa.pub  | pbcopy

Pour simuler pbcopysur Ubuntu avec xclip(installé via sudo apt install xclip):

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