Il existe deux outils de ligne de commande (dans deux packages différents) pour accéder au presse-papiers X:
xclip
name__xsel
name__J'aimerais connaître la différence entre les deux et entendre une recommandation à utiliser dans quels cas.
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
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
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
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