Del terminal al portapapeles con xclip

Cada vez paso mas tiempo en el terminal. Mejor dicho, cada vez paso menos tiempo fuera del terminal. Así, trabajando en el terminal me siento cómodo, muy cómodo. Y no solo esto, sino que además me siento realmente productivo. Y me siento productivo por una sencilla razón, no tengo distracciones. Cuando estoy redactando un artículo, o preparando un podcast, utilizando VIM, poco mas puedo hacer. Simplemente puedo escribir. Así en ocasiones, tengo dos terminales abiertos, uno de los terminales, para escribir el artículo, y el otro para comprobar que cada una de las instrucciones que cito en el artículo funcionan como se espera. Pero, ¿como copiar esa instrucción de un terminal a otro? Pues si, como te has imaginado, utilizando el portapapeles del sistema para realizar esa operación… así de sencillo. Pero, ¿como copiar al portapapeles sin utilizar el ratón? Utilizando xclip.

En este artículo te comento sobre xclip, las posibilidades que tienes y como utilizarlo para copiar al portapapeles del sistemas sin despegar los dedos del teclado.

Del terminal al portapapeles con xclip

Del terminal al portapapeles con xclip

¿Que es xclip?

xclip es una herramienta para el terminal implementada para funcionar en cualquier sistema X11, para gestionar el portapapeles. Se trata de una herramienta excepcional para escribir en el portapapeles.

Pero, ¿para escribir en el portapapeles qué? Pues, lo que necesites copiar al portapapeles. Desde el contenido de un archivo, pasando por un log, hasta por supuesto, cualquier comando. Todo ello, sin necesidad de que tengas que recurrir al ratón. Es decir, sin despegar los dedos del teclado.

Uso y funcionamiento

Como te decía anteriormente, xclip lee de la entrada estándar y por supuesto directamente de archivos, y lo pone en el portapapeles de forma que esté disponible para cualquier aplicación.

¿Que opciones tiene?. De entre las diferentes opciones que tiene esta herramienta destacerte las siguientes,

  • -i copia al portapapeles
  • -o lee del portapapeles
  • -r si el último caracter es \n lo quita
  • -sel te permite indicar el portapales que utilizar. Si no indicas nada, para pegar tienes que utilizar el botón central del ratón, y no podrás utilizar los atajos de teclado Ctrl+C y Ctrl+V. Por otro lado, si indicas la opción -sel clip, podrás utilizar el botón derecho, y por supuesto los atajos de teclado por defecto que utilizas habitualmente para copiar y pegar.
  • -f hace que clip sea completamente transparente. Es decir, lo que pegas en clip va también a la salida estándar. Si haces echo ejemplo | xclip no produce ningún resultado. Por el contrario, echo ejemplo | xclip -f, mostrará ejemplo por la salida estándar.
  • -t especifica el formato que has copiado en el portapapeles. Así, por ejemplo si indicas -t text/html indicará que lo que hay en el portapapeles es HTML, de forma que cuando lo vayas a pegar, la aplicación destino, si lo soporta, lo pegará en ese sentido.

Ejemplos de uso

En todos los ejemplos voy indicar el portapapeles secundario, que es el que habitualmente utilizamos. Esto del portapapeles primario y secundario es algo que me pilla de nuevas a estas alturas, y lo cierto, es que nunca he utilizado el portapapeles primario, el del botón central. La única razón que se me ocurre para utilizarlo es, precisamente, que lo que copiemos, no esté disponible de la forma habitual. Pero salvo esta razón, no veo otra razón mas.

  • Para copiar cualquier cosa al portapapeles echo "cualquier cosa" | xclip -sel clip
  • Para copiar la última instrucción que ejecutaste al portapapeles echo !! | xclip -sel clip
  • Para pegar esa última instrucción en un archivo xclip -sel clip -o > ejemplo.txt. Esto borra todo el contenido del archivo, si lo que quieres es añadirlo simplemente utiliza xclip -sel clip -o >> ejemplo.txt. Para esto de las entradas y salidas, te recomiendo le des un vistazo al capítulo de redirigir entrada y salida en Linux del tutorial sobre el terminal.
  • Si olvidaste eso del portapapeles primario y el secundario, siempre puedes copiar del primario al secundario. Para ello, ejecuta xclip -o | xclip -sel clip

Si estás en VIM y quieres copiar al portapapeles, tienes que utilizar el modo de comandos, y ejecutar !xclip -sel clip -f. Si no utilizas -f en lugar de copiar, lo que estás haciendo es cortando.

Una observación…

Si siempre vas a utilizar xclip -sel clip, es interesante hacerte un alias para estas herramientas. Y ya que estás lo acortas al máximo…, aunque esto es una opción. Así, por ejemplo, tengo definidos los siguientes alias,

alias tp='xclip -sel clip'
alias fp='xclip -sel clip -o'

El primero, tp, toportapaples, es para copiar al portapapeles. Mientras que el segudo fp, frompportapapeles, es para pegar del portapapeles.

De esta manera me ahorro escribir unos pocos caracteres…

Copiar y pegar archivos

Otra opción de copiar y pegar, es utilizar las herramientas xclip-copyfile, xclip-cutfile y xclip-pastefile. Esto te permite copiar, cortar y pegar archivos desde el portapapeles. Pero, esto solo es dentro del terminal. Quiero decir, que lo que copias utilizando estas herramientas, no está disponible por ejemplo en Nautilus. Lo que es una verdadera lástima. En ocasiones, sería realmente interesante, copiar desde el terminal y poder pegar en tu gestor de archivos preferido.

Así, las herramientas disponibles son,

  • xclip-copyfile para copiar uno o varios archivos
  • xclip-cutfile en lugar de copiar, lo que hace es cortar los archivos
  • xclip-pastefile pega los archivos que hayas copiado o cortado previamente.

Sin embargo, así como en el caso de xclip, veo claramente la ventaja de su uso, en el caso de estos otras herramientas, no termino de encontrarles la gracia. Y no termino de encontrarles la gracia, mas que nada por que no tienes posibilidad de utilizarlas directamente desde el portapapeles del sistema, que es cuando realmente le podrías sacar partido. Por que de otra manera, simplemente utilizando las herramientas que tienes disponibles es mas que suficiente.


Más información,

Imagen de portada de Hendri Sabri en Unsplash

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *