Comment puis-je diriger la sortie standard du terminal (stdout) vers le presse-papiers?

106

Par exemple,

Dites que je veux lister le contenu d'un dossier et le coller directement dans une fenêtre de discussion pour qu'un ami puisse le voir.

Je me rends compte que je pourrais faire ls > filename.txtpour créer un fichier (filename.txt) avec ce contenu; Il me faudrait ensuite ouvrir ou imprimer le fichier, puis sélectionner et copier manuellement le bloc de texte ( ce qui peut être ennuyeux / fastidieux ). Je pourrais aussi bien sélectionner et copier le résultat lsdirectement à partir de la fenêtre du terminal.

Il serait beaucoup plus rapide / facile de simplement transférer une sortie standard dans le presse-papiers .

Quelle commande de terminal me permet de faire cela?

Insperatus
la source
1
unix.stackexchange.com/questions/3892/…
Ciro Santilli a annoncé le

Réponses:

122

Cela peut être fait avec les utilitaires de ligne de commande xsel ou xclip . Étant donné qu’aucun de ces programmes n’est fourni avec Ubuntu par défaut, vous devez d’abord les installer via Ubuntu Software ou le terminal. Voici comment procéder dans le terminal (mais souvenez-vous que vous n’avez besoin que de l’un des deux).

sudo apt install xsel
sudo apt install xclip

Maintenant quelques exemples. Si vous voulez copier le résultat de lsdans le presse-papiers, voici ce que vous feriez:

Avec xsel:

ls | xsel -ib

Avec xclip:

ls | xclip -sel clip

Ceci peut bien sûr être utilisé pour d'autres commandes de terminal . Supposons que vous souhaitiez coller les informations de votre réseau dans un forum d'aide.

Avec xsel:

sudo lshw -C network | xsel -ib

Avec xclip:

sudo lshw -C network | xclip -sel clip

Faites-le encore plus facilement avec un nouvel alias bash!

Editez votre ~/.bash_aliasesfichier (s'il n'existe pas encore, créez-le d'abord avec touch ~/.bash_aliases)

Ajoutez ensuite un des éléments suivants (en fonction du programme que vous avez choisi):

alias copy='xclip -sel clip'

ou

alias copy='xsel -ib'

Puis enregistrez et fermez.

Maintenant (après avoir redémarré votre terminal), vous pouvez envoyer la sortie standard dans le presse-papiers en le connectant simplement pour le copier (ou ce que vous décidiez de nommer votre nouvel alias).

Par exemple:

ls | copy
Insperatus
la source
1
Avec les nouvelles versions d'Ubuntu, vous devriez utiliser apt. Alors sudo apt install xselou sudo apt install xclip.
Wisbucky
1
Merci pour la réponse, mais savez-vous quelque chose juste pour le terminal Linux?
Mohamad
1
@ jpaugh. Comparez la documentation de gestion de paquets Ubuntu pour 16.04 vs 14.04 . En 16.04, cela ne fait que mentionner aptet pas apt-get. Vous pouvez toujours utiliser apt-get, mais ils essaient d'encourager les gens à utiliser apt.
Wisbucky
2
Vous n'êtes pas obligé de redémarrer le terminal; vous pouvez justesource ~/.bash_aliases
Rob K
1
@Mohamad Ils sont destinés à être exécutés à l'intérieur d'un serveur X (car ils fournissent la fonctionnalité du presse-papiers). Si vous n'en avez pas, vous devez le faire dans votre émulateur de terminal. Comment faire cela dépend du logiciel que vous utilisez, car il n’existe pas de norme de facto pour cela.
Thorbjørn Ravn Andersen
2

Si vous essayez de copier dans le presse-papiers en utilisant Ubuntu dans le sous-système Windows pour Linux (WSL), xsel ou xclip ne fonctionnera pas, sauf si vous utilisez X Windows, car le presse-papiers est uniquement destiné à grahpical. Toutefois, vous pouvez utiliser la sortie standard du terminal vers le presse-papiers dans WSL Ubuntu clip.exe. Vous pouvez ensuite coller dans le terminal WSL Ubuntu avec des commandes de collage standard. Le texte copié sera également disponible sous Windows. Par exemple,

pwd | clip.exe 

copiera le répertoire de travail actuel dans le presse-papiers (Windows).

Ce résultat de recherche apparaît en haut de la page lorsque vous cherchez des moyens de copier / coller du texte dans WSL, je pense donc que cela vaut la peine de le mentionner pour que les lecteurs n’installent pas inutilement xsel ou xclip dans Ubuntu et les utilisent plutôt clip.exe.

Snap Shot
la source