Je viens de poser une question connexe car je n'arrive pas à faire fonctionner xclip lors de la connexion à Ubuntu à partir de Git Bash sur Windows: stackoverflow.com/q/60117294/470749
Ryan
1
Enregistrez le contenu du fichier dans le presse-papiers. apt install xclipetcat file | xclip -sel clip
EsmaeelE
Réponses:
598
J'ai toujours voulu faire cela et j'ai trouvé un moyen agréable et facile de le faire. J'ai noté 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 diriger la sortie vers xclipà copier 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 à quel point cela est utile, imaginez que je veux ouvrir mon chemin actuel dans une nouvelle fenêtre de terminal (il peut y avoir d'autres façons de le faire comme Ctrl+ Tsur certains systèmes, mais c'est juste à des fins d'illustration):
Terminal1:
pwd | c
Terminal2:
cd `v`
Remarquez les ` ` alentours v. Celui-ci s'exécute d'abord vcomme une commande, puis la remplace sur place pour cdêtre utilisée.
Copiez uniquement le contenu dans le Xpresse - papiers
cat file | xclip
Si vous souhaitez coller ailleurs qu'une Xapplication, essayez celle-ci:
"cat file | xclip" copiez uniquement le contenu dans le presse-papiers 'X', si vous voulez coller ailleurs que dans une application 'X', essayez celle-ci: "cat file | xclip -selection clipboard"
khotyn
5
Votre choix de poignée est approprié!
Matt Joiner
4
Si vous souhaitez supprimer le caractère de nouvelle ligne afin de pouvoir directement coller et éditer le résultat de "pwd | c", vous pouvez faire "pwd | tr -d '\ n' | xclip -selection c"
Anake
12
définir alias "cs=xclip -selection clipboard"et alias "vs=xclip -o -selection clipboard"faciliter le copier / coller à partir du presse-papiers du système
Yibo Yang
1
Qu'en est-il d'une solution où je n'ai pas accès à sudo et où xclip n'est pas installé ??
DanGordon
179
Sous OS X, utilisez pbcopy; pbpasteva dans la direction opposée.
vous pouvez également utiliser cat, si vous travaillez déjà avec lui: cat file.txt | pbcopy
rtrigoso
3
Je sais que le commentaire a 5 ans, mais au cas où quelqu'un tomberait dessus à l'avenir, à utiliser avec la sortie de commande, faitesgit merge-base master some-branch | pbcopy
Sam
62
J'ai créé un outil pour Linux / OSX / Cygwin qui est similaire à certains de ces autres mais légèrement unique. Je l'appelle cbet il peut être trouvé dans ce gistub gistub .
Dans cet esprit, je montre comment faire du copier-coller via la ligne de commande en utilisant Linux, macOS et Cygwin.
Remarque: Je voulais à l'origine simplement mentionner cela dans mon commentaire à la réponse de Bob Enohp . Mais ensuite, j'ai réalisé que je devais ajouter un fichier README à mon contenu. Étant donné que l'éditeur gist n'offre pas d'aperçu de Markdown, j'ai utilisé la boîte de réponse ici et après l'avoir copiée / collée dans ma pensée gist, "je ferais aussi bien de soumettre la réponse."
Cela a fonctionné parfaitement pour moi pour copier une sortie de commande dans le presse-papiers dans le terminal sur macOS, merci!
Joshua Dyck
46
J'ai écrit ce petit script qui supprime les devinettes 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;thenif[[-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
fielse
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 car il vous suffit de diriger ou de quitter clipboardcomme indiqué dans ces deux exemples.
J'utilise les noms pbcopyet pbpastesous Linux, donc cela fonctionne à la fois pour Linux et OS X.
StackedCrooked
Pour que le script fonctionne globalement dans ubuntu: * Enregistrez-le sur ~/.scripts/clipboard * Rendez-le exécutable chmod +x ~/.scripts/clipboard pour bash: * ajoutez export PATH=$PATH:~/.scriptsà la fin de ~/.bashrc pour fish: * ajoutez set PATH ~/.scripts $PATHà ~/.config/fish/fish.config Si l'un des fichiers ou dossiers n'existe pas déjà, créez-les.
Hockey
2
Vous pouvez également envelopper ce script en tant que fonction clipboard(){ ... }et le coller dans .bashrc
Sebastian Nowak
C'est très similaire à celui que j'ai fait, mais j'autorise le chaînage comme date | cb | tee -a updates.log. Cela enverrait la datesortie de la commande au presse-papiers et la transmettrait à la tee -acommande qui l'ajoute à un fichier et la transmet à stdout. Mais c'est comme un " tee étanche pour le presse-papiers" parce que si vous le faites, date | cbvous n'obtenez aucune sortie. Et enfin, il fait aussi cb > file.txtgist.github.com/RichardBronosky/…
Bruno Bronosky
Une suggestion - supprimez le caractère de fin de ligne pour éviter d'exécuter la commande lors du collage (par exemple si vous copiez-collez un chemin). Je fais cela en modifiant la commande xclip -i -selection clipboardpourxargs echo -n | xclip -i -selection clipboard
Ivaylo Strandjev
23
Ajoutez ceci à votre ~/.bashrc:
# Now `cclip' copies and `clipp' pastes'
alias cclip='xclip -selection clipboard'
alias clipp='xclip -selection clipboard -o'
Maintenant, coupez les pâtes p et les copies de clips c - mais vous pouvez aussi faire des choses plus sophistiquées:
clipp | sed 's/^/ /'| cclip
↑ met en retrait votre presse-papiers; bon pour les sites sans { }bouton de débordement de pile
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 xselpour copier le dernier message de validation de gitmon gestionnaire de presse-papiers (pour une raison quelconque, xclipcela ne fonctionne pas):
@AfshinMoazami, le titre et la question elle-même sont génériques, seules les balises suggèrent un système Unix, et ma réponse couvre le cas lorsque vous essayez d'obtenir la date d'un serveur Unix vers une machine Windows, ce qui peut être utile pour les futurs lecteurs.
d.raev
1
Voté parce que oui, utile aux administrateurs Windows qui n'ont que Powershell pour jouer localement (bien que maintenant avec LSW réellement fonctionnel, je puisse passer en bash directement depuis Powershell et faire mes * nixy à partir de là).
2017 à 7h59
Son travail sur l'invite DOS ainsi que git bash sur windows 10 ieecho Hello World | clip
5
Pour mac c'est un exemple de façon de copier (dans le presse-papiers) coller (depuis le presse-papiers) en utilisant la ligne de commande
Copiez le résultat de la pwdcommande dans le presse-papiers comme
J'ai créé un petit outil offrant des fonctionnalités similaires, sans utiliser xclip ou xsel. stdoutest copié dans un presse-papiers et peut être collé à nouveau dans le terminal. Voir:
Notez que cet outil n'a pas besoin d'une session X. Le presse-papiers peut simplement être utilisé dans le terminal et ne doit pas être collé par Ctrl+Vou avec le clic du milieu de la souris dans d'autres fenêtres X.
Je viens d'un milieu dépouillé de KDE et je n'ai pas accès à xclip,xsel ni aux autres trucs fantaisistes. J'ai une TCSH Konsole pour aggraver les choses.
Remarque: Cela doit être bash car TCSH ne prend pas en charge les arguments multilignes.
Suivi d'un alias TCSH dans le .cshrc.
alias clipboard xargs -0/path/to/foo
Explication:
xargs -0tuyaux stdin en un seul argument. Cet argument est passé à l'exécutable bash qui envoie une requête "copier dans le presse-papiers" à klipperusing qdbus. Le canal vers /dev/nullne doit pas imprimer le caractère de retour à la ligne renvoyé par qdbusla console.
Exemple d'utilisation:
ls | clipboard
Cela copie le contenu du dossier actuel dans le presse-papiers.
Remarque: Fonctionne uniquement comme un tuyau. Utilisez directement l' exécutable bash si vous devez copier un argument.
Pour ceux qui utilisent bash installé sur leur système Windows (connu sous le nom de Windows Subsystem for Linux (WSL)), la tentative de xclip donnera une erreur:
Error:Can't open display: (null)
Rappelez-vous plutôt 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).
Notez que si un xserver (tel que vcxsvr ou xming) est installé sur Windows, un affichage est activé et xclipboard est en cours d'exécution, vous pouvez réellement utiliser xclip de manière apparente.
bitbyte
0
Juste pour couvrir un cas de bord :) et parce que le titre de la question demande (au moins maintenant) comment copier la sortie d'une commande directement dans le presse-papiers.
Souvent, je trouve utile de copier la sortie de la commande après qu'elle a déjà été exécutée et je ne veux pas ou ne peux pas exécuter à nouveau la commande.
Pour ce scénario, nous pouvons utiliser gdm ou un utilitaire de souris similaire et sélectionner à l'aide de la souris. apt-get install gdmpuis soit le clic droit ou les combinaisons Cntrl + Maj + c et Cntrl + Maj + v pour copier et coller dans le terminal
Ou, qui est la méthode préférée pour moi (comme la souris ne peut pas sélectionner correctement dans un volet lorsque vous avez plusieurs volets côte à côte et que vous devez sélectionner plusieurs lignes), en utilisant tmux, nous pouvons copier dans le tampon tmux en utilisant la norme [, espace, déplacez pour sélectionner, entrez ou vous pouvez sélectionner un bloc de code. Cela est également particulièrement utile lorsque vous êtes dans l'une des voies du multiplexeur cli comme tmux ET que vous devez sélectionner un tas de texte, mais pas les numéros de ligne (ma configuration vim rend les numéros de ligne)
Après cela, vous pouvez utiliser la commande:
tmux save-buffer - | xclip -i
Vous pouvez bien sûr l'aliaser à quelque chose que vous aimez ou lier directement dans le fichier de configuration tmux
C'est juste pour vous donner une réponse conceptuelle pour couvrir ce cas de bord lorsqu'il n'est pas possible d'exécuter à nouveau la commande. Si vous avez besoin d'exemples de code plus spécifiques, faites-le moi savoir
apt install xclip
etcat file | xclip -sel clip
Réponses:
J'ai toujours voulu faire cela et j'ai trouvé un moyen agréable et facile de le faire. J'ai noté 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
:Vous pouvez ensuite diriger la sortie vers
xclip
à copier dans le presse-papiers:Pour coller le texte que vous venez de copier, vous devez utiliser:
Pour simplifier la vie, vous pouvez configurer un alias dans votre fichier .bashrc comme je l'ai fait:
Pour voir à quel point cela est utile, imaginez que je veux ouvrir mon chemin actuel dans une nouvelle fenêtre de terminal (il peut y avoir d'autres façons de le faire comme Ctrl+ Tsur certains systèmes, mais c'est juste à des fins d'illustration):
Remarquez les
` `
alentoursv
. Celui-ci s'exécute d'abordv
comme une commande, puis la remplace sur place pourcd
être utilisée.Copiez uniquement le contenu dans le
X
presse - papiersSi vous souhaitez coller ailleurs qu'une
X
application, essayez celle-ci:la source
alias "cs=xclip -selection clipboard"
etalias "vs=xclip -o -selection clipboard"
faciliter le copier / coller à partir du presse-papiers du systèmeSous OS X, utilisez
pbcopy
;pbpaste
va dans la direction opposée.la source
pbcopy < .ssh/id_rsa.pub
pbcopy < git merge-base master some-branch
git merge-base master some-branch | pbcopy
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 ce gistub gistub .Dans cet esprit, je montre comment faire du copier-coller via la ligne de commande en utilisant Linux, macOS et Cygwin.
Linux
macOS
Cygwin
Remarque: Je voulais à l'origine simplement mentionner cela dans mon commentaire à la réponse de Bob Enohp . Mais ensuite, j'ai réalisé que je devais ajouter un fichier README à mon contenu. Étant donné que l'éditeur gist n'offre pas d'aperçu de Markdown, j'ai utilisé la boîte de réponse ici et après l'avoir copiée / collée dans ma pensée gist, "je ferais aussi bien de soumettre la réponse."
cb
Un tee étanche au presse-papiers
Ce script est calqué sur
tee
(voirman tee
).C'est comme vos commandes de copier-coller normales, mais unifiées et capables de détecter quand vous voulez qu'elle soit chaînable
Exemples
Copie
Pâte
Enchaînement
Copier via la redirection de fichiers
(chronologiquement, il était logique de faire une démonstration à la fin)
la source
J'ai écrit ce petit script qui supprime les devinettes 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.
La version OS X du script repose sur pbcopy et pbpaste qui sont préinstallés sur tous les Mac.
L'utilisation du script est très simple car il vous suffit de diriger ou de quitter
clipboard
comme indiqué dans ces deux exemples.la source
pbcopy
etpbpaste
sous Linux, donc cela fonctionne à la fois pour Linux et OS X.~/.scripts/clipboard
* Rendez-le exécutablechmod +x ~/.scripts/clipboard
pour bash: * ajoutezexport PATH=$PATH:~/.scripts
à la fin de~/.bashrc
pour fish: * ajoutezset PATH ~/.scripts $PATH
à~/.config/fish/fish.config
Si l'un des fichiers ou dossiers n'existe pas déjà, créez-les.clipboard(){ ... }
et le coller dans .bashrcdate | cb | tee -a updates.log
. Cela enverrait ladate
sortie de la commande au presse-papiers et la transmettrait à latee -a
commande qui l'ajoute à un fichier et la transmet àstdout
. Mais c'est comme un " tee étanche pour le presse-papiers" parce que si vous le faites,date | cb
vous n'obtenez aucune sortie. Et enfin, il fait aussicb > file.txt
gist.github.com/RichardBronosky/…xclip -i -selection clipboard
pourxargs echo -n | xclip -i -selection clipboard
Ajoutez ceci à votre
~/.bashrc
:Vous pouvez l'ajouter en exécutant ceci:
la source
J'utilise Parcellite et
xsel
pour copier le dernier message de validation degit
mon gestionnaire de presse-papiers (pour une raison quelconque,xclip
cela ne fonctionne pas):la source
Sans utiliser d'outils externes, si vous vous connectez à la vue du serveur SSH, il s'agit d'une commande relativement simple:
À partir d'une invite de commande Windows 7+:
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.)
la source
echo Hello World | clip
Pour mac c'est un exemple de façon de copier (dans le presse-papiers) coller (depuis le presse-papiers) en utilisant la ligne de commande
Copiez le résultat de la
pwd
commande dans le presse-papiers commeUtilisez le contenu du presse-papiers comme
la source
J'ai créé un petit outil offrant des fonctionnalités similaires, sans utiliser xclip ou xsel.
stdout
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 session X. Le presse-papiers peut simplement être utilisé dans le terminal et ne doit pas être collé par Ctrl+Vou avec le clic du milieu de la souris dans d'autres fenêtres X.
la source
Sous Linux avec xclip installé:
la source
Sur la base des articles précédents, je me suis retrouvé avec la solution d'alias légère suivante qui peut être ajoutée à
.bashrc
:Exemples:
la source
Je viens d'un milieu dépouillé de KDE et je n'ai pas accès à
xclip
,xsel
ni aux autres trucs fantaisistes. J'ai une TCSH Konsole pour aggraver les choses.Prérequis:
qdbus
klipper
xargs
bash
Créez un exécutable bash
foo.sh
.Remarque: Cela doit être bash car TCSH ne prend pas en charge les arguments multilignes.
Suivi d'un alias TCSH dans le
.cshrc
.Explication:
xargs -0
tuyaux stdin en un seul argument. Cet argument est passé à l'exécutable bash qui envoie une requête "copier dans le presse-papiers" àklipper
usingqdbus
. Le canal vers/dev/null
ne doit pas imprimer le caractère de retour à la ligne renvoyé parqdbus
la console.Exemple d'utilisation:
Cela copie le contenu du dossier actuel dans le presse-papiers.
Remarque: Fonctionne uniquement comme un tuyau. Utilisez directement l' exécutable bash si vous devez copier un argument.
la source
J'exécute généralement cette commande lorsque je dois copier mon
ssh-key
:ctrl+v
n'importe où ailleurs.la source
sur Wayland xcopy ne semble pas fonctionner, utilisez plutôt wl-clipboard . par exemple sur fedora
la source
Pour ceux qui utilisent bash installé sur leur système Windows (connu sous le nom de Windows Subsystem for Linux (WSL)), la tentative de xclip donnera une erreur:
Rappelez-vous plutôt que le sous-système Linux a accès aux exécutables Windows. Il est possible d'utiliser clip.exe comme
qui vous permet d'utiliser la commande coller (ctrl-v).
la source
Juste pour couvrir un cas de bord :) et parce que le titre de la question demande (au moins maintenant) comment copier la sortie d'une commande directement dans le presse-papiers.
Souvent, je trouve utile de copier la sortie de la commande après qu'elle a déjà été exécutée et je ne veux pas ou ne peux pas exécuter à nouveau la commande.
Pour ce scénario, nous pouvons utiliser gdm ou un utilitaire de souris similaire et sélectionner à l'aide de la souris.
apt-get install gdm
puis soit le clic droit ou les combinaisons Cntrl + Maj + c et Cntrl + Maj + v pour copier et coller dans le terminalOu, qui est la méthode préférée pour moi (comme la souris ne peut pas sélectionner correctement dans un volet lorsque vous avez plusieurs volets côte à côte et que vous devez sélectionner plusieurs lignes), en utilisant tmux, nous pouvons copier dans le tampon tmux en utilisant la norme [, espace, déplacez pour sélectionner, entrez ou vous pouvez sélectionner un bloc de code. Cela est également particulièrement utile lorsque vous êtes dans l'une des voies du multiplexeur cli comme tmux ET que vous devez sélectionner un tas de texte, mais pas les numéros de ligne (ma configuration vim rend les numéros de ligne)
Après cela, vous pouvez utiliser la commande:
tmux save-buffer - | xclip -i
Vous pouvez bien sûr l'aliaser à quelque chose que vous aimez ou lier directement dans le fichier de configuration tmux
C'est juste pour vous donner une réponse conceptuelle pour couvrir ce cas de bord lorsqu'il n'est pas possible d'exécuter à nouveau la commande. Si vous avez besoin d'exemples de code plus spécifiques, faites-le moi savoir
À votre santé
la source