143 votes

Une utilitaire de copie et de collage du presse-papiers en ligne de commande?

Sur Windows, j'utilisais des utilitaires de copie-colle en ligne de commande...

  • pclip.exe et gclip.exe

Il s'agissait de ports UnixUtils pour Windows (mais ils ne géraient que du texte brut). Il y avait quelques autres utilitaires natifs Windows qui pouvaient écrire/extraire n'importe quel format.

J'ai cherché quelque chose de similaire dans le Gestionnaire de paquets Synaptic, mais je ne trouve rien.

Est-ce qu'il y a quelque chose que j'ai manqué? ... ou peut-être est-ce disponible avec du scripting Bash?

Le type d'utilitaire que je souhaite doit être capable de lire/écrire via l'entrée/sortie standard ou à partir/de fichiers, et gérer les formats de clipboard Unicode, Rich Text Format, images, etc...

NB : Je ne cherche pas un gestionnaire de clipboard.

1voto

xerostomus Points 705

Pour le format RTF, j'utilise cette procédure : Je copie le texte dans le presse-papiers de l'application. Si je ne suis pas sûr que c'est du rtf ou autre chose, j'utilise cette commande pour vérifier :

xclip -selection clipboard -o -t CIBLES

Quand il affiche quelque chose comme cela :

CIBLES

text/rtf

text/richtext

Je ne peux pas m'empêcher de m'exclamer tout haut : "Wow, c'est génial ! Dieu bénisse linux !" Après cette prière spontanée, la chose évidente à faire est :

xclip  -selection clipboard -o -t text/rtf > monprecieuxcontenurtf.rtf
Ensuite, je le traite dans LibreOffice et l'envoie à tous mes amis comme un spam.

-)

-1voto

Rob Gray Points 1556

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

sudo apt-get install tmux

Essayez aussi gpm. Les commandes gpm et tmux pourraient être une bonne combinaison...

-2voto

mattruma Points 7742

Yo ya gnomers, c'est ce que vous obtenez en utilisant des bêtises CORBA.
Rien de mieux pour votre logiciel que d'utiliser des outils qui ne sont pas installés par défaut.

Si vous aviez utilisé un environnement de bureau approprié, comme KDE-plasma, vous n'auriez pas ce problème, car vous pourriez simplement utiliser dbus, à partir de n'importe quel 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.
Cela ne vous sera probablement pas utile, puisque vous n'avez pas klipper, mais je me suis dit que je mentionnerais quand même, juste pour vous ennuyer avec la manière dont cela se fait correctement.

PS: Ne copiez pas ce code C#, Task.Result pourrait provoquer un blocage.

private static async System.Threading.Tasks.Task 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(service, objectPath);

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

    return clipboardContents;
}

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

private static async System.Threading.Tasks.Task SetClipboardContentsAsync(string texte)
{
    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(service, objectPath);

        await klipper.setClipboardContentsAsync(texte);
    } // Fin using connection 

}

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X