web-dev-qa-db-fra.com

'xclip' contre 'xsel'

Il existe deux outils de ligne de commande (dans deux packages différents) pour accéder au presse-papiers X:

  • xclipname__
  • xselname__

J'aimerais connaître la différence entre les deux et entendre une recommandation à utiliser dans quels cas.

42
Byte Commander

xclip et xsel peuvent tous deux stocker du texte dans sélections différentes (par défaut, il s'agit de la sélection principale). Par expérience, je sais que la sélection principale est essentiellement ce que vous mettez en surbrillance et que vous relâchez avec le clic du milieu de la souris (ce qui correspond à la pression des touches droite et gauche du pavé tactile sur un ordinateur portable). Le presse-papiers est le traditionnel CtrlV.

En examinant les pages man pour les deux, cependant, j'ai découvert que xclip gagne un aspect - lire à partir d'un fichier d'entrée:

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)

Bien sûr, vous pouvez utiliser la redirection Shell avec xsel pour contourner ce problème.

xieerqi:
$ xsel --clipboard < testfile.txt                                              

xieerqi:
$ HELLOWORLD
mksh: HELLOWORLD: not found

xclip gagne également dans le fait que vous pouvez exporter le contenu du presse-papier dans un fichier (ce qui est peut-être utile lorsque vous souhaitez rediriger la sélection PRIMARY, par exemple les surlignages). xsel offre uniquement une sortie sur stdout

26

En plus de @Serg answer , il existe une information de la page page Tmux dans Arch Wiki qui peut être utile dans certains cas :

contrairement à xsel, il [xclip] fonctionne mieux pour imprimer un flux de données brut qui ne correspond pas aux paramètres régionaux actuels. Néanmoins, il est préférable d'utiliser xsel au lieu de xclip, car xclip ne ferme pas STDOUT après sa lecture dans le tampon de tmux. En tant que tel, tmux ne sait pas que la tâche de copie est terminée et continue d'attendre la fin de xclip, rendant ainsi tmux inactif. Une solution de contournement consiste à rediriger STDOUT de xclip vers/dev/null

20
PlasmaBinturong

Une autre chose à garder à l'esprit, xsel a moins de dépendances 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
15
Martin K

Utilisez xclip, car xsel ne peut pas extraire de données binaires du Presse-papiers, telles que le serveur d’écran. Par exemple, enregistrez la capture d'écran dans le presse-papiers:

$ maim -s | xclip -selection clipboard -t image/png

Puis sauvegarder dans un fichier et comparer les résultats:

$ xclip -o -selection clipboard > 1xclip
$ xsel -o --clipboard > 1xsel
$ ls -go 1*
-rw-rw-r-- 1 11948 Sep 26 20:13 1xclip
-rw-rw-r-- 1     0 Sep 26 20:13 1xsel
6
anatoly techtonik