Gérer le presse-papier en ligne de commande sous Linux avec xclip

Dans cet article, nous allons voir comment gérer le presse-papier en ligne de commande sous Linux grâce au programme xclip. Cela nous permettra de réaliser des copier/coller en ligne de commande ou via des scripts bash. Par exemple, nous pouvons remplir le presse-papier à l’aide d’un script de bash de telle sorte que la fonction de collage renvoi le texte issue du script.

Cela peut s’avérer utile dans une démarche d’optimisation des actions quotidiennes, cela peut faire gagner énormément de temps.

Installation de xclip

L’installation de xclip est très simple car le logiciel se trouve dans les dépôts officiels de la plupart des distributions Linux. Avec CentOS, cela se résume à activer le dépôt epel et utiliser la commande yum.

yum install epel-release
yum install xclip
Installation de xclip sur CentOS

Copier des données dans le presse papier

Par défaut, xclip va lire l’entrée standard et placer les données lu dans le presse papier par défaut : c’est-à-dire celui qui est utilisé avec le bouton molette de la souris. En effet, il existe plusieurs presses papier et xclip sait faire la différence, on va voir cela juste après.

La commande la plus basique est donc :

echo "Du texte en presse papier" | xclip
# L'option -i pour "in", pas forcément nécessaire
echo "Du texte en presse papier" | xclip -i
# Fonctionne aussi avec des commandes
uptime | xclip
Ajouter du texte dans le presse papier avec xclip

On peut également placer le contenu d’un fichier dans le presse papier. On peut faire cela avec les redirections de flux :

echo "Du texte" > mon_fichier.txt
xclip < mon_fichiers.txt
Placer le contenu d'un fichier dans le presse papier avec xclip

On peut également manipuler deux presses papiers. Si vous ne le saviez pas, il existe (au moins) deux presses papiers sur Linux :

  • Celui accessible avec la sélection et le clic-molette de la souris. Pour xclip, c’est le presse papier primary
  • Celui accessible avec les raccourcis CTRL + C et CTLR + V (ou clic droit copier/coller). C’est le presse papierclipboard.
  • Dans le manuel de xclip, il est mentionné une troisième optionsecondary mais dans mes tests, cela ne semble pas fonctionner. En faisant quelques recherches, la distinction semble être expliquée sur un article à propos de X et la gestion du presse papier. L’article ne parle pas de secondary donc pour moi, secondary n’existe pas dans X, c’est clipboard qu’il faut utiliser. En résumé, on oublie secondary.

Par défaut, xclip place les données dans le presse papier principal, c’est-à-dire celui accessible avec le clic-molette. Cela peut se changer avec l’option -selection :

# On enregistre la date dans le presse papier 'clipboard', on utilise CTRL + V ou clic droit/coller pour l'utiliser
date | xclip -selection clipboard
# On enregistre la date dans le presse papier 'secondary', on utilise le clic molette pour l'utiliser
date | xclip -selection primary
Distinction entre le presse papier primary et clipboard dans xclip

Coller des données

Pour coller des données, on peut utiliser le clic molette pour le presse papier primary ou CTRL + V et clic droit/coller pour le presse papier clipboard (voire même SHIFT + INSERT, mais c’est moins connu).

On peut également utiliser xclip pour coller des données, ce qui permet de gérer cela en ligne de commande ou dans un script. Pour cela, il suffit de lancer xclip avec l’option -o (pour out). L’option -selection est toujours supportée, elle permet de choisir à partir de quel presse papier il faut récupérer les données :

# On place des données dans le presse papier primaire, les deux commandes sont équivalentes
echo "primary" | xclip
echo "primary" | xclip -selection primary
# On affiche les données du presse papier primaire, les deux commandes sont équivalentes
xclip -o
xclip -o -selection primary
# On place les données dans un fichier
xclip -o -selection primary > mon_fichier.txt
# On place des données dans le presse papier secondaire
echo "clipboard" | xclip -selection clipboard
# On affiche les données du presse papier secondaire
xclip -o -selection clipboard
# On place les données du presse papier secondaire dans un fichier
xclip -o -selection clipboard > mon_fichier.txt
Récupération (collage) des données avec Xclip

Conclusion

Nous avons vu comment il est possible de gérer le presse papier en ligne de commande à l’aide de xclip. Cela permet de copier/coller des données en ligne de commande, tout en faisant la distinction entre les différents presses papiers qu’il existe.

Un cas d’usage intéressant est un script qui permet de remplir automatiquement le presse papier pour qu’il soit utilisé facilement dans un environnement graphique. Par exemple, pour copier/coller un mot de passe qui serait généré par le script (attention à la sécurité !). Cela permet d’automatiser certaines tâches.

 

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.