Comment puis-je copier la sortie d'une commande directement dans mon presse-papier?

Comment puis-je rediriger la sortie d'une commande dans mon presse-papiers et le coller lors de l'utilisation d'un terminal? Par exemple:

cat file | clipboard
348
demandé sur Legend 2011-02-27 05:10:46

10 réponses

J'ai toujours voulu faire cela et trouve une belle et facile de le faire. J'ai écrit la procédure complète au cas où quelqu'un d'autre en aurait besoin.

Installez D'abord un programme de 16 Ko appelé xclip:

sudo apt-get install xclip

Vous pouvez ensuite canaliser la sortie dans xclip pour être copié dans le presse-papiers:

cat file | xclip

Pour coller le texte que vous venez de copier, Vous devez utiliser:

xclip -o

Pour simplifier la vie, vous pouvez configurer un alias dans votre .fichier bashrc comme je l'ai fait:

alias "c=xclip"
alias "v=xclip -o"

Pour voir comment c'est utile, imaginez que je veux ouvrir mon chemin dans une nouvelle fenêtre de terminal (il peut y avoir d'autres façons de le faire comme Ctrl+T sur certains systèmes, mais c'est juste à des fins d'illustration):

Terminal 1:
pwd | c

Terminal 2:
cd `v`

Notez le ` ` autour de v. Cela exécute {[10] } en tant que commande en premier, puis le remplace en place pour cd à utiliser.

Copiez uniquement le contenu dans le presse-papiers X

cat file | xclip

Si vous voulez coller ailleurs autre qu'un X application, essayez celui-ci:

cat file | xclip -selection clipboard
416
répondu Legend 2016-09-12 21:30:58

Sur OS X, utilisez pbcopy; pbpaste va dans la direction opposée.

127
répondu DavidPhillipOster 2015-04-09 11:39:31

J'ai écrit ce petit script qui prend le travail de conjecture des commandes copier / coller.

La version Linux du script repose sur le fait que xclip est déjà installé sur votre système. Le script est appelé presse-papiers.

#!/bin/bash
# Linux version
# Use this script to pipe in/out of the clipboard
#
# Usage: someapp | clipboard     # Pipe someapp's output into clipboard
#        clipboard | someapp     # Pipe clipboard's content into someapp
#

if command -v xclip 1>/dev/null; then
    if [[ -p /dev/stdin ]] ; then
        # stdin is a pipe
        # stdin -> clipboard
        xclip -i -selection clipboard
    else
        # stdin is not a pipe
        # clipboard -> stdout
        xclip -o -selection clipboard
    fi
else
    echo "Remember to install xclip"
fi

La version OS X du script repose sur pbcopy et pbpaste qui sont préinstallés sur tous les Mac.

#!/bin/bash
# OS X version
# Use this script to pipe in/out of the clipboard
#
# Usage: someapp | clipboard     # Pipe someapp's output into clipboard
#        clipboard | someapp     # Pipe clipboard's content into someapp
#

if [[ -p /dev/stdin ]] ; then
    # stdin is a pipe
    # stdin -> clipboard
    pbcopy
else
    # stdin is not a pipe
    # clipboard -> stdout
    pbpaste
fi

L'Utilisation du script est très simple puisque vous effectuez simplement une entrée ou une sortie de clipboard comme indiqué dans ces deux exemples.

$ cat file | clipboard

$ clipboard | less
35
répondu Bob Enohp 2016-09-12 21:32:45

J'ai créé un outil pour Linux/OSX/Cygwin qui est similaire à certains de ces autres mais légèrement unique. Je l'appelle cb et , il peut être trouvé dans cette github gist.

Dans cet esprit, je montre comment copier et coller via la ligne de commande en utilisant Linux, macOS et Cygwin.

Linux

_copy(){
    cat | xclip -selection clipboard
}

_paste(){
    xclip -selection clipboard -o
}

MacOS

_copy(){
    cat | pbcopy
}

_paste(){
    pbpaste
}

Cygwin

_copy(){
    cat > /dev/clipboard
}

_paste(){
    cat /dev/clipboard
}

Note: à l'origine, j'avais juste l'intention de le mentionner dans mon commentaire à la réponse de Bob Enohp. Mais ensuite, j'ai réalisé que je devrais ajouter un README à mon essentiel. Puisque l'éditeur gist n'offre pas D'aperçu Markdown, j'ai utilisé la boîte de réponse ici et après l'avoir copié / collé dans ma pensée gist ," je pourrais aussi bien soumettre la réponse."

Cb

Un té étanche au presse-papiers

Ce script est modélisé d'après tee (voir man tee).

C'est comme vos commandes de copier-coller normales, mais unifiées et capables de détecter quand vous le souhaitez chaînable

Exemples

Copie

$ date | cb
# clipboard contains: Tue Jan 24 23:00:00 EST 2017

Coller

# clipboard retained from the previous block
$ cb
Tue Jan 24 23:00:00 EST 2017
$ cb | cat
Tue Jan 24 23:00:00 EST 2017
$ cb > foo
$ cat foo
Tue Jan 24 23:00:00 EST 2017

Enchaînement

$ date | cb | tee updates.log
Tue Jan 24 23:11:11 EST 2017
$ cat updates.log
Tue Jan 24 23:11:11 EST 2017
# clipboard contains: Tue Jan 24 23:11:11 EST 2017

Copier via la redirection de fichier

(chronologiquement, il était logique de démo à la fin)

# clipboard retained from the previous block
$ cb < foo
$ cb
Tue Jan 24 23:00:00 EST 2017
# note the minutes and seconds changed from 11 back to 00
28
répondu Bruno Bronosky 2017-08-07 18:26:40

Ajouter à votre ~/.bashrc:

# Now `cclip' copies and `clipp' pastes'
alias cclip='xclip -selection clipboard'
alias clipp='xclip -selection clipboard -o'

Maintenant clipp pâtes et cclip exemplaires - mais vous pouvez également amateur de trucs:

clipp | sed 's/^/    /' | cclip

↑ indente votre presse-papiers; bon pour les sites sans débordement de pile{ } bouton

Vous pouvez l'ajouter en exécutant ceci:

printf "\nalias clipp=\'xclip -selection c -o\'\n" >> ~/.bashrc
printf "\nalias cclip=\'xclip -selection c -i\'\n" >> ~/.bashrc
18
répondu user3276552 2016-09-12 21:39:29

J'utilise Parcellite et xsel pour copier le dernier message de validation de git dans mon gestionnaire de presse-papiers (pour une raison quelconque, xclip ne fonctionne pas):

$ git log -1 --pretty=%B | xsel -i -b
7
répondu Michal Przybylowicz 2016-04-14 13:38:07

Sans utiliser d'outils externes, si vous vous connectez au serveur view SSH, c'est une commande relativement simple:

À partir D'une invite de commande Windows 7+:

ssh user@server cat /etc/passwd | clip

Cela mettra le contenu du fichier distant dans votre presse-papiers local.

(la commande nécessite L'exécution de Pageant pour la clé, ou elle vous demandera un mot de passe.)

4
répondu d.raev 2016-09-12 21:38:20

J'ai fait un petit outil offrant des fonctionnalités similaires, sans utiliser xclip ou xsel. {[0] } est copié dans un presse-papiers et peut être collé à nouveau dans le terminal. Voir:

Https://sourceforge.net/projects/commandlinecopypaste/

Notez que cet outil n'a pas besoin D'une X-session. Le presse-papiers peut simplement être utilisé dans le terminal et ne doit pas être collé par Ctrl + V ou un clic du milieu de la souris dans D'autres X-windows.

3
répondu Dirk Duschinger 2013-11-11 20:49:04

Sous Linux avec xclip installé:

Xclip-sélection presse-papiers

3
répondu tristobal 2016-01-28 19:59:37

Pour ceux qui utilisent bash installé sur leur système windows (connu sous le nom Windows Subsystem for Linux (WSL)), tenter xclip donnera une erreur:

Error: Can't open display: (null)

Au lieu de cela, rappelez-vous que le sous-système linux a accès aux exécutables windows. Il est possible d'utiliser clip.exe comme

echo hello | clip.exe

Qui vous permet d'utiliser la commande Coller (Ctrl-v).

0
répondu DFeng 2018-06-30 00:15:24