'xclip' vs. 'xsel'

24

Existem duas ferramentas de linha de comando (em dois pacotes diferentes) para acessar a área de transferência do X:

  • xclip
  • xsel

Eu adoraria saber a diferença entre os dois e ouvir uma recomendação sobre qual deles usar em quais casos.

    
por Byte Commander 03.12.2015 / 21:25

3 respostas

15

Tanto xclip como xsel podem armazenar texto em 3 seleções diferentes (por padrão, é primário seleção). Pela experiência eu sei que a seleção primária é basicamente o que você destaca e libera com o clique do mouse (o que corresponde a pressionar as teclas direita e esquerda do touchpad em um laptop). A área de transferência é a tradicional Ctrl V .

Examinando as páginas man para ambos, no entanto, descobri que xclip ganha em um aspecto - lendo de um arquivo de entrada:

xieerqi:
$ cat testfile.txt                                                             
HELLOWORLD

xieerqi:
$ xclip -selection clipboard testfile.txt

xieerqi:
$ HELLOWORLD
mksh: HELLOWORLD: not found

xieerqi:
$ xsel testfile.txt 
Usage: xsel [options]
Manipulate the X sele . . . (usage page goes on)

É claro que você poderia usar o redirecionamento de shell com xsel para contornar isso

xieerqi:
$ xsel --clipboard < testfile.txt                                              

xieerqi:
$ HELLOWORLD
mksh: HELLOWORLD: not found

xclip também ganha no fato de que você pode enviar o conteúdo da área de transferência para o arquivo (o que talvez seja útil quando você deseja redirecionar a seleção PRIMARY, ou seja, destaques). xsel oferece apenas saída para stdout

    
por Sergiy Kolodyazhnyy 04.12.2015 / 00:01
9

Além da @Serg resposta , há uma informação do Página do tux no Arch Wiki que pode ser útil em alguns casos específicos :

  

ao contrário de xsel, o [xclip] funciona melhor na impressão de bitstream bruto que não se encaixa na localidade atual. No entanto, é melhor usar o xsel em vez do xclip, porque o xclip não fecha o STDOUT depois de ler o buffer do tmux. Como tal, o tmux não sabe que a tarefa de cópia foi concluída e continua a esperar pela terminação do xclip, tornando o tmux sem resposta. Uma solução alternativa é redirecionar o STDOUT do xclip para / dev / null

    
por PlasmaBinturong 29.03.2017 / 14:26
7

Outra coisa para ter em mente é que xsel tem menos dependências do que xclip :

# apt-cache depends xsel
xsel
  Depends: libc6
  Depends: libx11-6
  Conflicts: xsel:i386

# apt-cache depends xclip
xclip
  Depends: libc6
  Depends: libx11-6
  Depends: libxmu6
  Conflicts: xclip:i386
    
por Martin K 29.03.2016 / 21:25