xsel: Copiar y pegar de la linea de comandos

O como abandonar ese bendito mouse.

Hoy aprendí una herramienta muy interesante de la linea de comandos.

Supón que tienes que copiar algo rápidamente en el portapapeles y ponerlo en otro lado, todo desde la linea de comandos.

Usualmente hubiera usado el mouse para un rapido copiar y pegar.

Pero porque usar el mouse cuando no hace falta?

La herramienta xsel [1] está aquí para ayudarte.

Vean esta respuesta de StackOverflow answer [2] a la pregunta “Cómo envío (cosas del stdin) al portapapeles?”.

Me topé con esta herramienta cuando estaba usando gnu-screen [3] y luego the haber creado una nueva ventana quería hacer cd en el mismo directorio en ambas ventanas.

Para evitar quitar mis dedos de asdf jklñ (home row) [4] pensé lo siguiente:

“Porque no hacer cd una vez hacia la ruta hacia la ruta y luego copiar la salida de pwd y pasarlo al cd de la otra pantalla?”

Así que lo hice

En la ventana 1)

1
2
3
4
cd /ruta/a/la/carpeta
pwd | xsel -i -b

# -i significa input/entrada y -b portapapeles/clipboard

Mover a la ventana 2)

1
2
3
cd $(xsel -o -b)

# $() ejecuta el comando de adentro, -o output/salida

et voilà

Nótese que en esta caso el parámetro -b no era necesario porque realmente no necesito que la info pase por el portapapeles pero mi modelo mental inicial incluía tenerlo ahí.

Otra cosa digna de mención es que no podía simplemente usar variables de entorno [5] porque no son compartidas entre las ventanas del gnu-screen.

Comentarios? Pueden pensar en otros usos útiles para esto? Formas mejores de resolver mi tonto problema? amantes/detractores de gnu-screen/tmux/etc que quieran contribuir de alguna manera a la discusión?

[1] http://linux.die.net/man/1/xsel
[2] http://unix.stackexchange.com/questions/3892/how-do-i-send-stdin-to-the-clipboard
[3] http://unix.stackexchange.com/questions/549/tmux-vs-gnu-screen
[4] http://www.typing.com/tutor/
[5] https://wiki.archlinux.org/index.php/environment_variables