Un utilitaire de copier / coller du presse-papiers en ligne de commande?


127

Dans Windows, j’utilisais des utilitaires copier-coller dans le presse-papiers du Presse-papiers ...

  • pclip.exe et gclip.exe

C'étaient des ports UnixUtils pour Windows (mais ils ne traitaient que du texte brut). Deux autres utilitaires Windows natifs pouvaient écrire / extraire n’importe quel format.

J'ai cherché quelque chose de similaire dans Synaptic Package Manager, mais je ne trouve rien.

Y at-il quelque chose que j'ai manqué? ... ou peut-être est-ce disponible dans les scripts Bash?

Le type d’utilitaire que je souhaite pourra lire / écrire via std-in / std-out ou file-in / file-out et gérer les formats Unicode, Rich Text Format, Image, Presse-papiers ...

NB: Je ne suis pas après un gestionnaire de presse-papiers.


Voir la question connexe posée par unix.SE: unix.stackexchange.com/questions/30093/…
landroni


vim[enter]"+P : 3 (exécutez vim puis à partir du " registre - c.-à-d. Presse-papiers du système - coller du texte) . Ensuite, vous avez (l'un des) meilleur (s) éditeur (s) de texte (s) au bout des doigts, pour que vous puissiez :w filename. De plus, j’exécute toujours vim dans tmux, ce qui signifie que si j’ai besoin de copier un peu de texte sur le terminal, je ne fais que sélectionner (avec vou Vpour la sélection de ligne), puis "+y(qui coupe ou copie dans le tmux et pouvez <ctrl> + <shift> + v pour coller. De plus, je l'utilise parfois xsel -b > filenamesi j'ai besoin d'écrire presse-papiers dans un fichier. Salut ^ u ^
dylnmc

Réponses:


131

J'utilise xsel Installer xsel , mais je ne l'utilise qu'avec du texte brut et du texte unicode.


xselpouvez copier et coller dans trois "presse-papiers" différents. Par défaut, il utilise la sélection principale du système X Window , qui correspond en gros à ce qui est actuellement dans la sélection. Le système X Window a également une sélection secondaire (peu utilisée) et une sélection du presse - papiers . Vous recherchez probablement la sélection du presse - papiers , car c’est ce que l’environnement de bureau (Gnome, KDE, XFCE, par exemple) utilise pour son presse-papiers. Pour utiliser cela avec xsel:

xsel --clipboard < new-clipboard-contents.txt
xsel --clipboard > current-clipboard-contents.txt

1
Adi ... xsel semble (?) Être uniquement basé sur du texte (comme vous l'avez mentionné), je vais donc chercher un utilitaire plus complet ... Cependant, il m'a été très intéressant de lire sa documentation d' informations ... Je savais que cliquer avec le milieu de la souris (dans le terminal) collerait le texte actuellement sélectionné dans la ligne de commande, mais je ne savais pas que cette fonctionnalité s'appliquait à la plupart des applications X ... La sélection de texte la plus récente peut être collé via un clic du milieu (mais certaines applications semblent le remplacer) ... Deux presse-papiers! .. Très pratique .. .Je dois en savoir plus sur le troisième tampon de sélection X.
Peter.O

xsel fonctionne avec le texte Unicode. Vous pouvez en savoir plus sur les presse-papiers X sur les pages wiki de freedesktop : freedesktop.org/wiki/Specifications/ClipboardsWiki .
Adi Roiban

Je dois me familiariser avec cette nouvelle information .. 3 presse-papiers! PRIMARY, SECONDAIRE, CLIPBOARD ... C’est très différent de ce à quoi je suis habitué dans Windows ... Le 3ème "CLIPBOARD" semble être identique à un presse-papier Windows / Mac ... mais il est ridiculement en retard ici .. J'y reviendrai demain ... (Intéressant, mais trop à lire maintenant ..)
Peter.O,

Merci ... xselfait le travail (pour le texte) ... Quelque chose pourrait arriver pour d'autres formats.
Peter.O

6
xsel -best l'abréviation de xsel --clipboard.
Andrei Duma

85

xclip Installer xclip peut être l'un de vos choix.

cat samples.sh | xclip -sel clip

vous pouvez également le définir dans le fichier .bashrc en utilisant un alias.

alias clipboard='xclip -sel clip'

La clé pour coller des données binaires dans un fichier xclipconsiste à indiquer les types de média que vous avez dans le Presse-papiers. Pour PNG, vous pouvez:

xclip -selection clipboard -t image/png -o > "`date '+%Y-%m-%d_%T'`.png"

Alors maintenant sur ~/Dropbox/.mybashrc;) vous pouvez ajouter un alias (clipboard2photo) pour coller facilement dans un fichier image (peut-être qu'un jour nous l'aurons sur Nautilus ).


Cela a l'air bien, mais je n'ai pas encore eu l'occasion de l'examiner, je vais le faire dès que possible ...
Peter.O Le

De plus, xclip ne gère que les sélections de texte.
Steve Beattie

2
En outre, la commande peut être aussi courte quexclip -se c
Jeromy Anglim

1
Je ne comprends pas pourquoi ce n'est pas dans la page de manuel
Sergiy Kolodyazhnyy

1
Je reçois ce en essayant de coller des images à fichier Erreur: image cible / .png non disponible
Emilio Nicolás

12

Parcellite

J'ai utilisé parcellite pendant de nombreuses années en tant que gestionnaire de presse-papiers. Il s'exécute dans la zone de notification et offre de nombreuses options pour gérer à la fois la sélection primaire et le presse-papiers standard freedesktop.org.

Icône de la barre

Cela a été ma réponse à la gestion des éléments du presse-papiers.

Préférences


Cela ressemble à une bonne application de panneau. Les "Actions" sont pratiques ... mais malheureusement, ce n'est pas le type d'outil que je recherche .. J'ai reformulé ma question pour y inclure des informations plus spécifiques ... Peut-être que ce que je recherche exactement, c’est un obscur script Python, ou quelque chose de similaire ... Il y avait quelques très bons utilitaires natifs pour Windows uniquement, donc je penserais qu’un équivalent pourrait flotter quelque part dans Ubuntu / Monde Linux ...
Peter.O

Pour info, Parcellite a une fonctionnalité intéressante - l'historique du texte copié. Pour activer le collage automatique à partir de la boîte de dialogue de l'historique, vous devez égalementinstall xdotool
Noam Manos

10

Je suis venu récemment à travers les outils xclip-copyfile, xclip-cutfile, et xclip-pastefile(package xclip). Ces outils vous permettent de copier / couper / coller des fichiers entiers via la ligne de commande.

Vous pouvez voir leur page de manuel ici.


10

clipit ( http://clipit.rspwn.com/ ) est un gestionnaire de presse-papiers pour gtk qui permet de rediriger du texte à partir de la ligne de commande:

ls | clipit;

Edit: Actuellement, il n'y a rien sur le site officiel de ClipIt mais vous pouvez l'obtenir auprès de GitHub


J'utilise ClipIt pour d'autres raisons et je ne savais pas qu'il était capable d'obtenir des données du terminal. Merci beaucoup pour cette info.
Juraj.Lorinc

3

Vous pouvez utiliser CopyQ pour cela. Sur le site:

Gestionnaire de presse-papiers aux fonctionnalités avancées

  • CopyQ est un gestionnaire de presse-papiers avec un historique interrogeable et éditable.
  • Prend en charge Linux et Windows.
  • Support expérimental pour OS X 10.9+.
  • Stocker du texte, HTML, des images et tout autre format personnalisé.
  • Interface de ligne de commande avancée et script.

Pour copier un fichier texte:

copyq action "cat /tmp/file.txt" "" && copyq select 0

Pour copier une image (vous devez indiquer le type MIME):

copyq write image/png - < file.png && copyq select 0

Pour copier un fichier de données (vous devez indiquer le type MIME):

copyq write application/pdf - < file.pdf && copyq select 0

Consultez leur wiki pour plus de documentation et d’exemples d’utilisation .

Vous pouvez l'installer via le PPA ppa: noobslab / Indicateurs ou en téléchargeant manuellement les .debfichiers préemballés de la dernière version stable à partir de la section Téléchargements du projet .


1
Le ppa n'est pas à jour, du moins pour Ubuntu 16.04, il est préférable de le télécharger directement à partir du site GitHub des éditions de CopyQ .
Nicolai

3

Si vous souhaitez simplement copier du texte dans le presse-papiers:

echo -n "some-text" | xclip -selection clipboard


2

Pastie

Un nouveau gestionnaire de presse-papiers prenant en charge Indicator Applet a récemment été publié (mais pas encore dans les archives). Outre le suivi de l'historique du presse-papiers, il capture et conserve également les entrées de données du presse-papiers (fichiers, dossiers, etc.), ce qui peut s'avérer utile si vous manipulez beaucoup de fichiers via un environnement GUI / Clipboard.

texte alternatif

Vous pouvez ajouter le PPA suivant :ppa:hel-sheep/pastie


Merci pour la suggestion Marco, mais je n'ai pas besoin d'un gestionnaire de presse-papiers. Parfois, je colle du texte temporaire dans un fichier texte, mais je trouve en fait qu'un "gestionnaire de l'historique" ralentit le processus (mais c'est juste moi) .. Je suis vraiment à la recherche d'un outil en ligne de commande qui peut extraire / stocker de manière sélective un format spécifique de / vers le clipboad .. Je suppose que le presse-papier Ubuntu est similaire à celui de Windows (je serais abasourdi s’il était vraiment différent, car les exigences des utilisateurs sont les mêmes sur n’importe quelle plate-forme) ... I ' Je suis sûr que votre suggestion sera utile.
Peter.O


1

Qu'en est-il des paramètres du démon GPaste , un applet de démon de gestion du presse-papiers avec interface DBus:

  • GPaste est une suite de gestion de presse-papiers pour GNOME écrite en Vala.
  • Les paramètres de GPaste ont été mis à jour pour mieux s’adapter aux récentes versions de GNOME.
  • Le démon est maintenant complètement équilibré (plus de scrutation, moins de consommation d'énergie)
  • GPasteClipboard a maintenant un signal de changement de propriétaire similaire à celui de GtkClipboard
  • Nouveau paramètre pour définir la quantité maximale de mémoire utilisée par les données de l'historique
  • Le mode FIFO a été abandonné (manque de design)
  • Nettoyage et modernisation du code
  • g_paste_history_add est maintenant transféré complet
  • g_paste_keybinder_add_keybinding est maintenant transféré complet

Installation:

Pour l'installer dans Ubuntu 13.10 , 13.04 , 12.10 ou 12.04 , utilisez les commandes ci-dessous:

sudo add-apt-repository ppa:webupd8team/gnome3
sudo apt-get update
sudo apt-get install gnome-shell-extensions-gpaste

Ou installez gpastevia synaptic package manager(et aussi gnome-shell-extensions-gpastesi vous utilisez Gnome-Shell).

Une autre option est l'installation via software-center.

entrez la description de l'image ici


1

J'essaie de développer une meilleure solution qui ne soit pas un gestionnaire de presse-papiers, disponible à l' adresse https://github.com/baitisj/copypasta . Il ne gère pas encore correctement le format RTF et HTML, et les grandes images posent des problèmes, mais n'hésitez pas à bifurquer et à soumettre des correctifs.


1

Pour le format RTF, j'utilise cette procédure: Je copie le texte dans le presse-papier de l'application. Si je ne sais pas s'il s'agit de rtf ou quoi, j'utilise cette commande pour vérifier:

xclip -selection clipboard -o -t TARGETS

Quand il imprime quelque chose comme ça:

CIBLES

texte / RTF

text / richtext

Je ne peux donc pas résister à m'exclamer à voix haute: "Bon Dieu, c'est génial! Que Dieu bénisse Linux!" Après cette prière, une chose évidente suit:

xclip  -selection clipboard -o -t text/rtf > mypreciousRTFcontent.rtf

Ensuite, je traite tout cela dans libreoffice et l’envoie à tous mes amis en tant que spam.

:-)


0

Yo ya gnomers, c'est ce que vous obtenez pour utiliser CORBA-crap.
Il n'y a rien de mieux pour le logiciel yar que d'utiliser des outils non installés par défaut.

Si vous aviez utilisé un environnement de bureau approprié, tel que KDE-plasma, vous n'auriez pas eu ce problème, car vous pourriez simplement utiliser dbus, quel que soit le logiciel que vous aimez, par exemple la console:

qdbus org.kde.klipper /klipper setClipboardContents "NiHao"
qdbus org.kde.klipper /klipper getClipboardContents

Personnellement, je me connecte directement à dbus avec C #, ce qui signifie que je n’ai pas besoin de qdbus.
C'est probablement inutile pour toi, puisque tu n'as pas klipper, mais j'ai pensé que je le mentionnerais de toute façon, juste pour t'ennuyer avec la façon dont c'est fait correctement.

PS: Ne copiez pas ce code C #, Task.Result pourrait se bloquer.

private static async System.Threading.Tasks.Task<string> GetClipboardContentsAsync()
{
    string clipboardContents = null;

    Tmds.DBus.ObjectPath objectPath = new Tmds.DBus.ObjectPath("/klipper");
    string service = "org.kde.klipper";

    using (Tmds.DBus.Connection connection = new Tmds.DBus.Connection(Tmds.DBus.Address.Session))
    {
        await connection.ConnectAsync();

        IKlipper klipper = connection.CreateProxy<IKlipper>(service, objectPath);

        clipboardContents = await klipper.getClipboardContentsAsync();
    } // End Using connection 

    return clipboardContents;
}


private static string GetClipboardContents()
{
    return GetClipboardContentsAsync().Result;
}


private static async System.Threading.Tasks.Task SetClipboardContentsAsync(string text)
{
    Tmds.DBus.ObjectPath objectPath = new Tmds.DBus.ObjectPath("/klipper");
    string service = "org.kde.klipper";

    using (Tmds.DBus.Connection connection = new Tmds.DBus.Connection(Tmds.DBus.Address.Session))
    {
        await connection.ConnectAsync();

        IKlipper klipper = connection.CreateProxy<IKlipper>(service, objectPath);

        await klipper.setClipboardContentsAsync(text);
    } // End using connection 

}


private static void SetClipboardContents(string text)
{
    SetClipboardContentsAsync(text).Wait();
}

-1

Oui il y a. Essayez tmuxce qui est plus avancé que screen. Pour installer tmux, tapez ceci dans le terminal:

sudo apt-get install tmux

Essayez aussi gpm. Les commandes gpmet tmuxpourraient être une bonne combinaison ...


2
Screen est un émulateur multi-terminal et non un gestionnaire de presse-papiers.
Marco Ceppi

Il semble que l' écran et Tmux que le travail au niveau du terminal (je ne peux trouver aucune référence à « presse - papiers » dans l' une de leur information documentation) ... Qu'est - ce que je cherche est un système à l' échelle presse - papiers copier et coller utilitaire ... Je n'aurais probablement pas dû utiliser le terminal comme balise ... Le type d'utilitaire que je veux pourra lire / écrire via std-in / std-out ou file-in / file-out et gérer Unicode / Formats de Presse-papiers au format RTF / images / etc ...
Peter.O,

Je viens de trouver une référence sur stackoverflow ... s’appliquegpm à un "presse-papiers" non terminal X, et GNU screendispose de son propre "presse-papiers" également ... Je vois maintenant pourquoi vous les avez mentionnés ... C’est une bonne information, et cela m'a amené à une compréhension plus profonde de ce qui se passe dans les coulisses ... Je vais m'en tenir au "système de sélections" de base de Xterm (clipboad) pour le moment ... Le "presse-papiers" de Linux semble si différent de Windows, que ce que je cherchais puisse être fait d'une manière très différente ici .. +1 :)
Peter.O
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.