Est-il possible de diriger vers / depuis le presse-papiers dans Bash?
Qu'il s'agisse de canaliser vers / depuis une poignée de périphérique ou d'utiliser une application auxiliaire, je ne trouve rien.
Par exemple, si /dev/clip
un appareil était lié au presse-papiers, nous pourrions faire:
cat /dev/clip # Dump the contents of the clipboard
cat foo > /dev/clip # Dump the contents of "foo" into the clipboard
:%y+
dans vim, qui est en vim pour "yank (copier) toutes les lignes dans le registre" + "(lePRIMARY
presse-papiers X )". Vous pouvez remplacer%
par une plage si vous souhaitez être précis. Mais il y a trois mises en garde: 1. Maintenant, vous devez enregistrer le texte dans un fichier avant de pouvoir le copier. Ceci contraste avec laxclip
commande mentionnée dans les réponses. 2. Si vous ne savez pas déjà comment vim, cela peut être fastidieux. 3. Vous ne pouvez le faire que si une certaine fonctionnalité est activée lors de la compilation de vim. Si vous installez GVim, il doit être activé par défaut dans l'interface graphique et les instances de terminal de vim.xclip
. Votre réponse a fonctionné comme un charme.:%y+
là mais ok, vous avez toutes les bases couvertes! Bon.Réponses:
Il y a une multitude de presse-papiers avec lesquels vous pourriez avoir affaire. Je suppose que vous êtes probablement un utilisateur Linux qui veut mettre des trucs dans le presse-papiers principal de X Windows. Habituellement, le presse-papiers auquel vous souhaitez parler a un utilitaire qui vous permet de lui parler.
Dans le cas de X, il y a
xclip
(et d'autres).xclip -selection c
enverra des données au presse-papiers qui fonctionne avec Ctrl + C, Ctrl + Vdans la plupart des applications.Si vous êtes sous Mac OS X, il y en a
pbcopy
. par exemplecat example.txt | pbcopy
Si vous êtes en mode terminal Linux (pas X) puis regardez dans
gpm
ou écran qui a un presse - papiers. Essayez lascreen
commandereadreg
.Sous Windows 10+ ou cygwin, utilisez
/dev/clipboard
ouclip
.la source
/dev/clipboard
fonctionne également pour les shells bash Msys / MinGWxclip -selection c
cela enverra des données au presse-papiers qui fonctionne avec ^ C, ^ V dans la plupart des applicationsclip
comme ceci:dir | clip
/dev/clipboard
et oblige à installer soit xclip soit gpm qui est manquant par défaut au moins dans Kubuntu (je suppose que dans la plupart des autres distributions aussi) .Assurez-vous que vous utilisez
alias xclip="xclip -selection c"
sinon vous ne pouvez pas simplement utiliser to Ctrl+ vpour le coller à un autre endroit.Ctrl+v
=== test
la source
xclip -selection clipboard -o
alias pbcopy="xclip -selection c"
alias pbpaste="xclip -selection clipboard -o"
J'espère que cela pourra aider.xclip
n'est pas l'ajout d'une nouvelle ligne,echo
est. Essayezprintf test | xclip -i -selection clipboard
. (printf
n'ajoute pas de nouvelle ligne sauf si vous écrivez'test\n'
.)echo -n
au lieu deprintf
.Installer
Si vous n'avez pas accès à
apt-get
nipacman
, nidnf
, les sources sont disponibles sur sourceforge .Installer
Frapper
Dans
~/.bash_aliases
, ajoutez:N'oubliez pas de charger votre nouvelle configuration en utilisant
. ~/.bash_aliases
ou en redémarrant votre profil.Poisson
Dans
~/.config/fish/config.fish
, ajoutez:N'oubliez pas de redémarrer votre instance de poisson en redémarrant votre terminal pour que les modifications s'appliquent.
Usage
Vous pouvez maintenant utiliser
setclip
etgetclip
, par exemple:la source
sudo pacman -S xclip
. Mais notez que ce.bashrc
n'est pas le meilleur endroit. Je recommande à l'utilisateur final de lire les fichiers bashrc, bash_aliases et .profile appropriés et comment bash les gère. Astuce: placez-le plutôt dans .bash_aliases.pacman
gestionnaire de paquets et suppression de la.bashrc
proposition. Je sais que.bash_aliases
c'est plus adapté, mais le résultat final est le même (.bashrc
nécessite simplement.bash_aliases
s'il existe). Si les gens veulent un système désordonné, laissez-les en avoir un. :).bashrc
sources.bash_aliases
à la fin. ;) Je respecte cette ancienne convention, qui reste 100% compatible sur les variantes Arch, Ubuntu / Debian, Raspberry, macOS / OSX et Windows Bash: stefaanlippens.net/my_bashrc_aliases_profile_and_other_stuff Avec cette convention, j'utilise les mêmes fichiers de points sur toutes les machines Je touche. C'est assez sympa: github.com/eduncan911/dotfilesSur macOS, utilisez les commandes intégrées
pbcopy
etpbpaste
.Par exemple, si vous exécutez
le contenu du
~/.bashrc
fichier sera disponible pour coller avec le raccourciCmd
+v
.la source
Essayer
xclip
homme
la source
xsel sur Debian / Ubuntu / Mint
Installer
la source
echo "foo" | xclip -selection c
t-il?xsel
etxclip
sont équivalentes à tous les égards sauf qu'ilxclip
peut lire / écrire des fichiers par nom, maisxsel
nécessite une redirection de shell si vous voulez accéder à un fichier.xsel
fonctionne bien à partir de scripts, tandis quexclip
ne fonctionne qu'à partir de l'invite. Pas certain de pourquoi.Wow, je ne peux pas croire combien il y a de réponses à cette question. Je ne peux pas dire que je les ai tous essayés mais j'ai essayé le top 3 ou 4 et aucun d'eux ne fonctionne pour moi. Ce qui a fonctionné pour moi, c'est une réponse située dans l'un des commentaires écrits par un utilisateur appelé doug. Comme je l'ai trouvé si utile, j'ai décidé de reformuler ma réponse.
Installez l'utilitaire xcopy et lorsque vous êtes dans le terminal, saisissez:
Copie
Pâte
J'ai remarqué beaucoup de réponses recommandées pbpaste et pbcopy. Si vous êtes dans ces utilitaires mais pour une raison quelconque, ils ne sont pas disponibles sur votre dépôt, vous pouvez toujours créer un alias pour les commandes xcopy et les appeler pbpaste et pbcopy.
Alors cela ressemblerait à ceci:
la source
Réponse 2018
Utilisez clipboard-cli . Il fonctionne avec macOS, Windows, Linux, OpenBSD, FreeBSD et Android sans aucun problème réel.
Installez-le avec:
npm install -g clipboard-cli
Ensuite, vous pouvez faire
echo foo | clipboard
Si vous voulez, vous pouvez alias
cb
en mettant ce qui suit dans votre.bashrc
,.bash_profile
ou.zshrc
:alias cb=clipboard
la source
npm
emballage sûr ?Sur le sous-système Windows pour Linux, vous pouvez copier dans le presse-papiers avec clip.exe.
N'oubliez pas d'utiliser la
|
commande pipe. Et pas une>
commande, car cela ne fonctionnera pas.la source
Voici un script bash prêt à l'emploi pour lire le presse-papiers qui fonctionne sur plusieurs plateformes. Veuillez modifier le script ici si vous ajoutez des fonctionnalités (par exemple, plus de plates-formes).
la source
Sous Windows (avec Cygwin), essayez
cat /dev/clipboard
ouecho "foo" > /dev/clipboard
comme mentionné dans cet article.la source
clip
. J'utilise msysgit 1.9.5 et cela a fonctionné.echo "foo" > /dev/clipboard
semble détruire complètement les sauts de ligne (pas une chose \ r \ n \ n mais complètement disparu)Pour Mac uniquement:
Ils sont situés
/usr/bin/pbcopy
et/usr/bin/pbpaste
.la source
Il existe différents presse-papiers sous Linux; le serveur X en a un, le gestionnaire de fenêtres peut en avoir un autre, etc. Il n'y a pas de périphérique standard.
Oh, oui, sur CLI, le programme d'écran a également son propre presse-papiers, tout comme d'autres applications comme Emacs et vi .
Dans X, vous pouvez utiliser xclip .
Vous pouvez vérifier ce fil pour d'autres réponses possibles: http://unix.derkeiler.com/Newsgroups/comp.unix.shell/2004-07/0919.html
la source
Copiez et collez dans le presse-papiers dans Windows (Cygwin):
Voir:
Il existe également getclip (il peut être utilisé à la place de Shift+ Ins!) Et putclip (echo oaeuoa | putclip.exe pour le mettre dans le clip).
la source
Il s'agit d'un simple script Python qui fait exactement ce dont vous avez besoin:
Enregistrez-le en tant qu'exécutable quelque part sur votre chemin (je l'ai enregistré dans
/usr/local/bin/clip
. Vous pouvez ajouter des éléments à enregistrer dans votre presse-papiers ...Et vous pouvez diriger ce qui se trouve dans votre presse-papiers vers un autre programme ...
Le faire fonctionner seul affichera simplement le contenu du presse-papiers.
la source
cat tmpfile
, pas le fonctionnement du presse-papiers. // identique aux réponses @horta.J'ai trouvé une bonne référence: /unix/69111/
Dans mon cas, je voudrais coller du contenu dans le presse-papiers et également voir ce qui y a été collé, j'ai donc également utilisé la
tee
commande avec un descripteur de fichier:>()
est une forme de substitution de processus. bash remplace chacun par le chemin d'accès à un descripteur de fichier qui est connecté à l'entrée standard du programme entre parenthèses.La
tee
commande bifurque votre commande vous permettant de "diriger son contenu" et de voir le résultat sur la sortie standard "stdout"vous pouvez également créer des alias à obtenir et à écrire dans le presse-papiers, vous permettant d'utiliser "pbcopy" et "pbpaste" comme si vous étiez sur MAC. Dans mon cas, comme j'utilise zsh, je l'ai sur mon fichier d'alias:
le
(( $+command[name] ))
dans les tests zsh si la commande « nom » est installé sur votre système, les alias sont regroupés avec{}
. l'&&
est un binaire et, si alors b, donc si vous avez xclip alors les alias sera défini.Pour obtenir le contenu de votre presse-papiers, tapez simplement:
la source
Fait le travail pour X Window, et il est pour la plupart déjà installé. Un coup d'œil dans la page de manuel de xsel en vaut la peine.
la source
Quelques programmes Windows que j'ai écrits il y a des années. Ils vous permettent de vider, pousser, ajouter et imprimer le presse-papiers. Cela fonctionne comme ceci:
Il comprend le code source: cmd_clip.zip
la source
Il y a deux façons. Certaines des façons qui ont été mentionnées incluent (je pense) tmux, screen, vim, emacs et le shell. Je ne connais ni emacs ni écran, je vais donc passer en revue les trois autres.
Tmux
Bien qu'il ne s'agisse pas d'une sélection X, tmux dispose d'un mode de copie accessible via
prefix-[
(prefix
est Ctrl+ Bpar défaut). Le tampon utilisé pour ce mode est séparé et exclusif à tmux, ce qui ouvre pas mal de possibilités et le rend plus polyvalent que les sélections X dans les bonnes situations.Pour quitter ce mode, appuyez sur q; pour naviguer, utilisez votre
vim
ouemacs
liaison (par défaut = vim), donchjkl
pour le mouvement,v/V/C-v
pour la sélection de caractère / ligne / bloc, etc. Lorsque vous avez votre sélection, appuyez sur Enterpour copier et quitter le mode.Pour coller à partir de ce tampon, utilisez
prefix-]
.coquille
Toute installation de
X11
semble venir avec deux programmes par défaut:xclip
etxsel
(un peu comme la façon dont elle est également fournie avec les deuxstartx
etxinit
). La plupart des autres réponses mentionnentxclip
, et j'aime beaucoupxsel
pour sa brièveté, donc je vais couvrirxsel
.De xsel (1x) :
Et c'est à peu près tout ce que vous devez savoir.
p
(ou rien) pourPRIMARY
,s
pourSECONDARY
,b
pourCLIPBOARD
,o
pour la sortie.Exemple: disons que je veux copier la sortie d'
foo
un ATS et la coller sur une page Web pour un rapport de bogue. Pour ce faire, il serait idéal de copier vers / depuis la session TTY / X. La question devient donc comment accéder au presse-papiers à partir du TTY?Pour cet exemple, nous supposerons que la session X est affichée
:1
.Ensuite, je peux
Ctrl-V
le mettre dans le formulaire comme d'habitude.Supposons maintenant que quelqu'un sur le site d'assistance me donne une commande à exécuter pour résoudre le problème. C'est compliqué et long.
La commande de pizza semble être une utilisation productive de la ligne de commande.
... continuons.
Vigueur
S'il est compilé avec
+clipboard
(C'est important! Vérifiez votrevim --version
), Vim devrait avoir accès au XPRIMARY
et auxCLIPBOARD
sélections. Les deux sélections sont accessibles à partir des registres*
et+
, respectivement, et peuvent être écrites et lues à votre guise comme n'importe quel autre registre. Par exemple:Si votre copie de vim ne prend pas directement en charge l'accès aux sélections X, ce n'est pas la fin du monde. Vous pouvez simplement utiliser la
xsel
technique décrite dans la dernière section.Liez quelques combos clés et vous devriez être bon.
la source
DISPLAY=
lors de l'appel d'une application X à partir d'un environnement non X. Les applications X ont besoin de laDISPLAY
variable d'environnement pour déterminer à quel serveur (ou y a-t-il un seul serveur gérant plusieurs sessions?) Auquel elles parlent. EssayezDISPLAY=:1 firefox
(ou quel que soit votre ID d'affichage; le mien se trouve être:1
) à partir d'un ATS, par exemple.:%y+
dans VIM.À partir de ce fil, il existe une option qui ne nécessite l'installation d'aucun logiciel
gclip
/xclip
/xsel
tiers.Un script perl (puisque perl est généralement toujours installé)
la source
pbcopy est construit dans OSX:
Copie du contenu de .bash_profile:
la source
Sous macOS, utilisez
pbpaste
.Par exemple:
Mettre à jour le presse-papiers
la source
Si vous êtes comme moi et que vous exécutez sur un serveur Linux sans privilèges root et qu'il n'y a pas de xclip ou de GPM, vous pouvez contourner ce problème en utilisant simplement un fichier temporaire. Par exemple:
la source
X selections
(ce qui est nécessairement impliqué par "presse-papiers" et toute mention de xclip / xsel), vous avez besoin d'une session X active (et donc d'un serveur X) afin que vous puissiez accéder à la sélection dans le première place. Pour voir ce que je veux dire, essayez de courirDISPLAY="" xsel
sur votre machine locale. Il se fermera sur une erreur, étant incapable de trouver la session""
, et aucune interaction avec aucune sélection X ne sera effectuée. C'est pourquoi j'ai d'abord dit que je ne vois pas comment les privilèges root entrent en ligne de compte: root ou pas de root, vous ne trouverez probablement pas une sélection X utile dans un environnement de serveur.Sous Linux, cela fonctionne:
la source
sur Wayland xcopy ne semble pas fonctionner, utilisez plutôt wl-clipboard . par exemple sur fedora
la source
Il existe également xclip-copyfile .
la source
Bien que> 1 an plus tard, je partage une solution légèrement différente. J'espère que cela est utile pour quelqu'un.
Hier, je me suis retrouvé avec la question: "Comment partager le presse-papiers entre différentes sessions utilisateur?" . Lorsque vous basculez entre les sessions avec ctrlaltF7- ctrlaltF8, en fait, vous ne pouvez pas coller ce que vous avez copié.
J'ai trouvé la solution rapide et sale suivante , basée sur un tuyau nommé. Il est sûrement assez nu et brut, mais je l'ai trouvé fonctionnel:
puis dans le terminal d'envoi
enfin, dans le terminal récepteur:
Maintenant, vous tapez ou collez quoi que ce soit dans le premier terminal et (après avoir appuyé return), il apparaîtra immédiatement dans le terminal de réception, d'où vous pourrez copier / coller à nouveau où vous le souhaitez.
Bien sûr, cela ne prend pas uniquement le contenu du presse-papiers de l'utilisateur1 pour le rendre disponible dans le presse-papiers de l'utilisateur2, mais cela nécessite plutôt une paire supplémentaire de clics de collage et de copie.
la source
xsel/xclip
. Par exemple, une extrémité écoute pour voir si l'une des sélections a changé, puis la redirige automatiquement (via le FIFO nommé) vers l'autre script, qui écoute un ou plusieurs canaux, qui l'insère dans sa propre sélection X. La copie de texte entraînerait donc automatiquement le même texte apparaissant dans la sélection de l'autre session X. Et n'oubliez pas$DISPLAY
.La doublure rubis m'a inspiré pour essayer avec du python.
Disons que nous voulons une commande qui met en retrait ce qui se trouve dans le presse-papiers avec 4 espaces. Parfait pour partager des extraits sur stackoverflow.
ce n'est pas une faute de frappe. Python a besoin de nouvelles lignes pour faire une boucle for. Nous voulons modifier les lignes en un seul passage pour éviter de créer un tableau supplémentaire en mémoire.
Si cela ne vous dérange pas de construire le tableau supplémentaire, essayez:
mais honnêtement, awk est meilleur pour cela que python. J'ai défini cet alias dans mon
~/.bashrc
fichiermaintenant, lorsque je lance
indent
tout ce qui est dans mon presse-papiers, il est en retrait.la source