Comment puis-je copier la sortie d'une commande directement dans mon presse-papier?
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
Sur OS X, utilisez pbcopy
; pbpaste
va dans la direction opposée.
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
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
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
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
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.)
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.
Sous Linux avec xclip installé:
Xclip-sélection presse-papiers
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).