Enquanto eu aprendia mais sobre o Fabric (framework de IA de código aberto), descobri que o macOS tinha dois comandos nativos para copiar e colar o conteúdo da área de transferência no terminal: pbcopy e pbpaste. O nome deles vem de “pasteboard”, que é o termo usado no macOS para a área de transferência.

Como esses dois comandos não funcionam no Linux e impactariam diretamente na forma como eu usava ferramentas de linha de comando, decidi descobrir como implementá-los.

Solução: Criar um alias usando outro comando do Linux

Depois de fazer algumas pesquisas, encontrei o xsel como a melhor solução para mim usando X11 (você pode verificar isso em: Configurações > Sistema > Detalhes do sistema > Sistema de Janela).

Primeiro, você precisa instalá-lo. Aqui está o comando para distribuições Ubuntu/Debian:

sudo apt install xsel
Bash

Depois, você precisa editar seu arquivo .bashrc e adicionar as seguintes linhas ao final:

# Versão Linux do pbcopy e pbpaste do macOS
alias pbcopy='xsel --clipboard --input'
alias pbpaste='xsel --clipboard --output'
Bash

Uma rápida explicação dos argumentos dos comandos:

  • --clipboard é para fazer com que opere na seleção de CLIPBOARD. Como alternativa, você pode deixar de fora esse argumento para fazê-lo operar na seleção primária (então você não precisa copiar um conteúdo, apenas selecioná-lo);
  • --input e --output são para habilitá-lo a ler ou gravar a entrada ou saída padrão na seleção. Isso é necessário se estivermos passando o conteúdo de um comando para outro.

Reinicie seu terminal ou execute o comando abaixo:

source ~/.bashrc
Bash

Agora você pode usar pbcopy e pbpaste em seu terminal, aqui está um exemplo:

kossmann@abracadabra:~$ pbpaste
Este texto foi copiado de um site

kossmann@abracadabra:~$ echo "Esta é uma saída do terminal" | pbcopy

kossmann@abracadabra:~$ pbpaste
Esta é uma saída do terminal
Bash

Solução alternativa para Wayland

Encontrei o projeto wl-clipboard que implementa dois utilitários de linha de comando para área de transferência do Wayland, wl-copy e wl-paste, que fazem a mesma coisa.

Quais são as razões para escolher xsel em vez de xclip?

Durante minha pesquisa, descobri que o xclip não fecha o STDOUT após ter lido do buffer do tmux, o que pode causar vários problemas (alguns exemplos aqui e aqui com o Sublime Merge).

Um fato curioso é que o xsel tem menos dependências do que o xclip:

kossmann@abracadabra:~$ apt-cache depends xsel
xsel
  Depends: libc6
  Depends: libx11-6

kossmann@abracadabra:~$ apt-cache depends xclip
xclip
  Depends: libc6
  Depends: libx11-6
  Depends: libxmu6
Bash


Comments

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *