Copiar y pegar desde la terminal puede ser muy útil para manejar el portapapeles sin necesidad del ratón o de atajos de teclado, desde los mismos scripts o la línea de comandos. Con los ejemplos seguro que verás muchas posibilidades de uso.En OSX, los comandos pbcopy y pbpaste están disponibles por defecto. Por lo tanto, para copiar un archivo en el portapapeles a través del terminal OSX, sería algo como lo siguiente:
pbcopy < 'ruta del archivo'
El método alternativo para copiar el contenido del archivo en el portapapeles, a través del terminal Linux.
Índice:
xclip y xsel en Linux
Dado que, en Linux, los comandos pbcopy
y pbpaste
no están disponibles por defecto, la instalación de xclip
o xsel
servirá para nuestro propósito.
sudo apt update
sudo apt install xclip xsel -y
Ahora tan solo hay que darle un alias a los comandos de copiar y pegar, para facilitar su uso:
alias pbcopy='xclip -selection clipboard'
alias pbpaste='xclip -selection clipboard -o'
Este texto hay que ponerlo en el fichero de configuración de tu shell. Por ejemplo, si usas bash es el fichero oculto .bashrc
y si usas zsh, como es mi caso, en el fichero .zshrc
. Puedes ver mi fichero completo aquí.
En caso de que no funcione xclip, usamos xsel)
alias pbcopy='xsel -b'
alias pbpaste='xsel -b -o'
Ahora ya tenemos pbcopy
y pbpaste
como los alias de los comandos de copiar y pegar (copy y paste) de xclip respectivamente (En mi caso concreto con xsel). Ahora es el momento de jugar un poco.
Ejemplos de uso de copiar y pegar desde la terminal
¿Para qué nos puede servir esto?
Pues veamos una prueba muy sencilla y luego especulemos algunos usos formidables de esta nueva funcionalidad en nuestra terminal.
Vamos a crear un fichero de prueba con el contenido «Hola Don Pepito». Vamos a copiar y pegarlo en pantalla.
pbcopy < pruebas.txt
pbpaste
Por lo tanto, ahora podemos copiar y pegar el contenido de nuestro archivo usando la terminal. Pensemos en un posible uso.
Claves ssh, gpg y todos esos hashes o códigos eternos que tenemos que trasladar a una aplicación externa. Ejemplo:
cat .ssh/id_ed25519.pub | pbcopy
Copiar comandos para incluirlos en un post
echo "cat .ssh/id_ed25519.pub pbcopy" | pbcopy
Como imaginaras, con las tuberías puedes recoger el output de cualquier comando y pegarlo donde quieras. Rollo una variables efímera. Por ejemplo:
date | pbcopy && pbpaste >> ps_info.txt && ps | pbcopy && pbpaste >> ps_info.txt
Prueba, prueba. Si se te ocurren más usos déjalo en los comentarios.
EXTRA ¯\_(ツ)_/¯
¿Sabías que existe una religión del copiar y pegar? 😮
Se llama Kopismo y se creó para amparar legalmente el intercambio de archivos en línea de tipo P2P. Busca la libertad de expresión como un bien máximo, y una cita importante que la justifica es: «Copiar y compartir información es lo mejor y más hermoso que existe. Que copien tu información es una muestra de aprecio, de que alguien cree que has hecho algo bueno».