Introducción

En ocasións preciso copiar a saída dun comando da terminal ao portapapeis, de xeito que o poida pegar noutra xanela. Por exemplo podería querer copiar a saída dun comando que está a faiar, para buscar o erro en internet. Ou copiar a saída dun comando cat para pegar o contido nun ssh remoto.

Por suposto isto pódese facer co rato, seleccionando o texto na terminal e copiando co botón dereito ou premendo ctrl+maiúsculas+c. Pero se queremos facer isto sen tener que seleccionar o texto, podemos utilizar o comando xclip.

Xclip

Cando busquei información fai tempo sobre este asunto, o primeiro que atopei foi xclip. Este comando permite copiar a saída ao portapapeis. Para instalarlo basta executar sudo apt install xclip. Para copiar a saída dun comando do xeito que queremos, executar comando | xclip -selection clipboard. Por exemplo: cat /etc/passwd | xclip -selection clipboard.

Con isto xa teríamos o texto no portapeis dispoñible para pegalo onde precisemos. Se o queremos facer na propia consola, chegará con executar xclip -o en lugar de xclip -selection clipboard.

Sen embargo cando hoxe o tentei facer, non me funcionaba. Por algún motivo o portapapeis do escritorio non mudaba o contido. Si que podo traballar sobre a mesma terminal e pegar o texto con xclip -o, pero non fora.

Polo que puiden atopar parece que para funcionar, xclip, precisa conectar ca sesión de xorg. E neste momento estou a correr Wayland. Así que tiven que buscar outra aplicación para isto.

wl-clipboard

Así atopei wl-clipboard. Este comando permite copiar a saída ao portapapeis. Para instalarlo basta executar sudo apt install wl-clipboard. Para copiar a saída dun comando do xeito que queremos, executar comando | wl-copy. Por exemplo: cat /etc/passwd | wl-copy. E para pegar o contido executaremos wl-paste.

Por algún motivo isto parece que non sempre funciona, xa que ao executar un comando que me amosase o contido dun certificado SSL, non tiña nada no portapapeis. Parece que algunhas aplicacións non saben como comunicarse con wl-clipboard. Ou iso lin por internet. Neste caso parece que chega con engadir o flag --type text/plain ao comando wl-copy. Por exemplo cat rootCA.pem | wl-copy --type text/plain.

Con isto agora si o teño no meu portapapeis e podo pegalo onde queira.

Conclusión

Hai varias aplicacións para facer o que preciso, nalgúns casos as ferramentas quedan obsoletas por mor dos cambios no compositor ou na distribución. Pero no mundo do software libre é doado atopar unha ferramenta que veña a cubrir rapidamente as necesidades.

Bibliografía

Artigo en Victorhckinthefreeworld: https://victorhckinthefreeworld.com/2024/10/02/copiar-en-la-terminal-la-salidad-de-un-comando-en-el-portapapeles-de-linux/
Foro onde atopei a solución a wl-copy: https://bbs.archlinux.org/viewtopic.php?id=283588