¿Cuál es el equivalente de la línea de comandos de copiar un archivo al portapapeles?

89

¿Cuál es la línea de comando equivalente a presionar CTRL + C sobre un archivo en el administrador de archivos para que el archivo (no el nombre del archivo) se copie en el portapapeles?

Una situación en la que esto puede ser útil y rápido, por ejemplo, es cuando desea copiar al portapapeles un archivo del directorio en el que se encuentra en el terminal para pegar rápidamente el archivo en el directorio en el administrador de archivos. Hay otros.

Strapakowsky
fuente
Esto realmente no me parece un duplicado. Una respuesta es sobre copiar y pegar en general, y esta es sobre copiar un tema específico del archivo
Ulysse BN

Respuestas:

104

Cuando presiona Ctrl-C sobre un archivo en el administrador de archivos, el contenido del archivo NO SE copia en el portapapeles. Una prueba simple: seleccione un archivo en el administrador de archivos, presione Ctrl-C, abra un editor de texto, presione Ctrl-V. El resultado no es el contenido del archivo sino su ruta completa.

En realidad, la situación es un poco más complicada porque no puede hacer lo contrario: copie una lista de nombres de archivo de un editor de texto y péguelos en el administrador de archivos.

Para copiar algunos datos de la línea de comandos al portapapeles X11, puede usar el xclipcomando, que se puede instalar con

sudo apt-get install xclip

copiar el contenido de un archivo o salida de algún comando al portapapeles

cat ./myfile.txt|xclip -i

el texto se puede pegar en algún lugar usando el botón central del mouse (esto se llama "búfer de selección primaria").

Si desea copiar datos a la selección del "portapapeles", para que pueda pegarse en una aplicación con Ctrl-V, puede hacerlo

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

Para poder copiar archivos desde la línea de comandos y pegarlos en un administrador de archivos, debe especificar un "átomo de destino" correcto para que el administrador de archivos reconozca los datos en el portapapeles y también proporcione los datos en el formato correcto. Afortunadamente, en caso de copiar archivos en un administrador de archivos, es solo una lista de nombres de archivos absolutos, cada uno en una nueva línea, algo que es fácil de generar usando el findcomando:

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

(Al menos esto funciona para mí en KDE). Ahora puede envolver en un pequeño script al que puede llamar, por ejemplo cb:

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

luego lo pones ~/bin, configura el bit ejecutable y lo usas así:

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

Bien, ¿no es así?

Sergey
fuente
Agradable, pero solo funciona para texto y no es realmente el archivo, solo el texto. ¿Y si tienes un archivo jpg?
Strapakowsky
Sí, conocía este efecto de que si copia un archivo desde el administrador de archivos si lo pega en otra carpeta, pega el archivo, pero si pega en un editor de texto, obtiene la ruta del archivo.
Strapakowsky
En el caso de archivos binarios (jpg, etc.) todo es mucho más complicado. Aquí hice una pregunta inspirada en la suya - unix.stackexchange.com/questions/53503/… - lea acerca de los "átomos objetivo" y esas cosas
Sergey
1
Escuché que xclip también admite la copia de archivos con xclip-copyfiley xclip-pastefile. Sin embargo, realmente no lo he usado, pero podría ser una solución.
Gladen
Wow, @Gladen, creo que debes publicarlo como una respuesta por separado. Aunque funciona cuando se usa xclip-copyfiley luego xclip-pastefile, pero no parece funcionar con el administrador de archivos de Ubuntu ...
Sergey
9

Escuché que xclip también admite la copia de archivos con xclip-copyfiley xclip-pastefile. Sin embargo, realmente no lo he usado, pero podría ser una solución.

Gladen
fuente
Eso solo copia los nombres de los archivos, no el contenido de los archivos. Solo eche un vistazo a los ejemplos de la página de manual, es decir$ man xclip-copyfile
Craig
0

Mac OS tiene pbcopyuna sintaxis más fácil:

pbcopy < ~/.ssh/id_rsa.pub 

o

cat ~/.ssh/id_rsa.pub  | pbcopy

Para simular pbcopyen Ubuntu con xclip(instalado a través de sudo apt install xclip):

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