Ein Befehlszeilenprogramm zum Kopieren und Einfügen der Zwischenablage?

127

In Windows habe ich Kommandozeilen-Dienstprogramme zum Kopieren und Einfügen der Zwischenablage verwendet ...

  • pclip.exe und gclip.exe

Dies waren UnixUtils-Ports für Windows (sie handelten jedoch nur mit einfachem Text). Es gab einige andere native Windows-Dienstprogramme, die jedes Format schreiben / extrahieren konnten.

Ich habe in Synaptic Package Manager nach etwas Ähnlichem gesucht, kann aber nichts finden.

Gibt es etwas, das ich verpasst habe? ... oder ist dies möglicherweise in Bash-Skripten verfügbar?

Die Art von Dienstprogramm, die ich verwenden möchte, kann über Standardeingabe / -ausgabe oder Dateieingabe / -ausgabe lesen / schreiben und Unicode-, Rich-Text-Format-, Bild- usw. Zwischenablage-Formate verarbeiten.

NB: Ich bin nicht hinter einem Zwischenablage-Manager her.

Peter.O
quelle
Siehe verwandte Frage von unix.SE: unix.stackexchange.com/questions/30093/…
Landroni
vim[enter]"+P : 3 (führe vim aus und dann aus dem " Register - dh der System-Zwischenablage - füge Text ein) . Dann haben Sie einen der besten Texteditoren an Ihren Fingerspitzen, also können Sie :w filename. Außerdem starte ich vim immer in tmux, was bedeutet, dass ich, wenn ich einen kleinen Text in das Terminal kopieren muss, nur (mit voder Vzur "+yZeilenauswahl ) und dann (welche Ruckler oder Kopien in die Zwischenablage) einen neuen auswähle tmux pane und kann <ctrl> + <shift> + v einfügen. Darüber hinaus verwende ich gelegentlich, xsel -b > filenamewenn ich die Zwischenablage in eine Datei schreiben muss. Prost ^ u ^
dylnmc

Antworten:

131

Ich verwende xsel Installieren Sie xsel , aber ich verwende es nur mit Klartext und Unicode-Text.


xselkann in drei verschiedene "Zwischenablagen" kopieren und einfügen. Standardmäßig wird die primäre Auswahl von X Window System verwendet. Dies ist im Grunde das, was gerade in der Auswahl ist. Das X Window System verfügt auch über eine sekundäre Auswahl (die nicht häufig verwendet wird) und eine Auswahl in der Zwischenablage . Sie suchen wahrscheinlich nach der Auswahl der Zwischenablage , da dies in der Desktop-Umgebung (z. B. Gnome, KDE, XFCE) für die Zwischenablage verwendet wird. So verwenden Sie das mit xsel:

xsel --clipboard < new-clipboard-contents.txt
xsel --clipboard > current-clipboard-contents.txt
Adi Roiban
quelle
1
Adi ... xsel scheint (?) Nur textbasiert zu sein (wie Sie bereits erwähnt haben), daher suche ich nach einem umfassenderen Dienstprogramm ... Es war jedoch sehr interessant für mich, die Info- Dokumentation zu lesen ... Ich wusste, dass das Klicken mit der mittleren Maustaste (im Terminal) den aktuell ausgewählten Text in die Befehlszeile einfügen würde, aber ich wusste nicht, dass diese Funktion für die meisten X-Apps gilt ... Die aktuellste Textauswahl kann sein Einfügen über einen Mittelklick (aber einige Apps scheinen ihn zu überschreiben). Zwei Zwischenablagen!. Sehr praktisch... Ich muss mehr über den 3. X-Auswahlpuffer lesen.
Peter.O
xsel arbeitet mit Unicode-Text. Weitere Informationen zu X-Zwischenablagen finden Sie auf den freedesktop-Wiki-Seiten: freedesktop.org/wiki/Specifications/ClipboardsWiki .
Adi Roiban
Ich muss mich um diese neuen Informationen kümmern. 3 Zwischenablagen! PRIMARY, SECONDARY, CLIPBOARD ... Das ist ganz anders, als ich es von Windows gewohnt bin ... Das dritte "CLIPBOARD" scheint dasselbe zu sein wie eine Windows / Mac-Zwischenablage ... aber es ist hier lächerlich spät Ich werde morgen darauf zurückkommen ... (Inersting, aber zu viel, um es jetzt zu lesen ..)
Peter.O
Danke ... xselerledigt die Arbeit (für Text) ... Etwas könnte für andere Formate auftauchen.
Peter.O
6
xsel -bist eine Abkürzung für xsel --clipboard.
Andrei Duma
85

xclip Installieren Sie xclip kann eine Ihrer Entscheidungen sein.

cat samples.sh | xclip -sel clip

Sie können es auch mithilfe eines Alias ​​in der .bashrc-Datei festlegen.

alias clipboard='xclip -sel clip'

Der Schlüssel zum Einfügen von Binärdaten in eine Datei xclipbesteht darin, anzugeben, welche Medientypen sich in der Zwischenablage befinden. Für PNG können Sie:

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

Jetzt ~/Dropbox/.mybashrckannst du einen Alias ​​(clipboard2photo) hinzufügen, um ihn einfach in eine Bilddatei einzufügen (vielleicht haben wir ihn eines Tages in Nautilus ).

kit.yang
quelle
Das sieht gut aus, aber ich hatte noch keine Gelegenheit, es mir anzuschauen ... Ich werde es so schnell wie möglich machen ...
Peter.O
xclip behandelt auch nur Textauswahlen.
Steve Beattie
2
Der Befehl kann auch so kurz sein wiexclip -se c
Jeromy Anglim
1
Ich verstehe nicht, warum dies nicht in der Manpage ist
Sergiy Kolodyazhnyy
1
Ich bekomme dies, wenn ich versuche, Bilder in eine Datei einzufügen Fehler: Zielbild / PNG nicht verfügbar
Emilio Nicolás
12

Parcellite

Ich habe Parcellite viele Jahre als Zwischenablage-Manager verwendet. Es wird im Benachrichtigungsbereich ausgeführt und bietet viele Optionen zum Verwalten der Primärauswahl und der Standard-Zwischenablage von freedesktop.org.

Benachrichtigungssymbol

Es war meine Antwort auf die Verwaltung von Zwischenablage-Elementen.

Einstellungen

Marco Ceppi
quelle
Dies sieht aus wie eine gute Panel-App. Die "Aktionen" sind praktisch. Leider ist sie nicht die Art von Tool, die ich suche. Ich habe meine Frage umformuliert, um einige spezifischere Informationen hinzuzufügen. Vielleicht ist genau das, wonach ich suche, ein obskures Python-Skript oder ähnliches ... Es gab ein paar sehr gute native Windows-Dienstprogramme, daher würde ich denken, dass irgendwo in Ubuntu / Linux-Welt ...
Peter.O
Zu Ihrer Information, Parcellite hat eine coole Funktion - den Verlauf von kopiertem Text. Um das automatische Einfügen aus dem Verlaufsdialog zu aktivieren, sollten Sie auchinstall xdotool
Noam Manos
10

Ich kam vor kurzem in den Werkzeugen xclip-copyfile, xclip-cutfileund xclip-pastefile(Paket xclip). Mit diesen Tools können Sie ganze Dateien über die Befehlszeile kopieren, ausschneiden und einfügen.

Sie können ihre Manpage hier sehen.

slm
quelle
10

clipit ( http://clipit.rspwn.com/ ) ist ein Zwischenablage-Manager für gtk, mit dem Text über die Befehlszeile weitergeleitet werden kann:

ls | clipit;

Bearbeiten: Derzeit gibt es nichts auf der offiziellen Website von ClipIt, aber Sie können es von GitHub erhalten

eMBee
quelle
Ich benutze ClipIt aus anderen Gründen und wusste nicht, dass es Daten vom Terminal abrufen kann. Vielen Dank für diese Info.
Juraj.Lorinc
3

Sie können dafür CopyQ verwenden . Von der Website:

Zwischenablage-Manager mit erweiterten Funktionen

  • CopyQ ist ein Zwischenablage-Manager mit durchsuchbarem und bearbeitbarem Verlauf.
  • Unterstützt Linux und Windows.
  • Experimentelle Unterstützung für OS X 10.9+.
  • Speichern Sie Text, HTML, Bilder und jedes andere benutzerdefinierte Format.
  • Erweiterte Befehlszeilenschnittstelle und Skripterstellung.

So kopieren Sie eine Textdatei:

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

So kopieren Sie ein Bild (Sie müssen den MIME-Typ angeben):

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

So kopieren Sie eine Datendatei (Sie müssen den MIME-Typ angeben):

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

Weitere Dokumentation und Verwendungsbeispiele finden Sie im Wiki .

Sie können es entweder über das PPA von ppa: noobslab / indicator oder durch manuelles Herunterladen vorgefertigter .debDateien des neuesten Stables aus dem Download-Bereich des Projekts installieren .

Landroni
quelle
1
Das ppa ist nicht auf dem neuesten Stand, zumindest für Ubuntu 16.04. Es ist besser, es direkt von der GitHub-Site von CopyQ herunterzuladen .
Nicolai
3

Wenn Sie nur Text in die Zwischenablage kopieren möchten:

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

Eyal Levin
quelle
2

Pastie

Kürzlich wurde ein neuer Zwischenablage-Manager mit Unterstützung für Indikator-Applets veröffentlicht (der sich jedoch noch nicht im Archiv befindet). Zusätzlich zum Verfolgen des Verlaufs der Text-Zwischenablage werden auch Einträge der Daten-Zwischenablage (Dateien, Ordner usw.) erfasst und gespeichert. Dies kann hilfreich sein, wenn Sie Dateien häufig über eine GUI / Zwischenablage-Umgebung bearbeiten.

Alt-Text

Sie können den folgenden PPA hinzufügen :ppa:hel-sheep/pastie

Marco Ceppi
quelle
Vielen Dank für den Vorschlag, Marco, aber ich brauche keinen Manager für die Zwischenablage. Gelegentlich füge ich temporären Text in eine Textdatei ein, aber ich stelle tatsächlich fest, dass ein "Verlaufsmanager" die Dinge verlangsamt (aber das bin nur ich). Ich bin wirklich hinter einem Befehlszeilen-Tool her, das selektiv extrahieren / speichern kann ein spezifisches Format vom / zum clipboad .. ich die Ubuntu Zwischenablage gehe davon ist ähnlich dem Windows - on (I betäubt werden würde , wenn es deutlich anders war, weil die Anforderungen der Anwender die gleiche auf jeder Plattform sind) ... I‘ Ich bin sicher, jemand wird Ihren Vorschlag nützlich finden.
Peter.O
1

Wie wäre es mit den GPaste-Dämoneinstellungen , einem Dämon-Applet für die Zwischenablageverwaltung mit DBus-Schnittstelle:

  • GPaste ist eine in Vala geschriebene Zwischenablage-Verwaltungssuite für GNOME
  • Das Aussehen der GPaste-Einstellungen wurde aktualisiert, um es besser an das aktuelle GNOME anzupassen
  • Daemon jetzt voll abends (kein Polling mehr, weniger Stromverbrauch)
  • GPasteClipboard hat jetzt ein "Besitzerwechsel" -Signal ähnlich dem von GtkClipboard
  • Neue Einstellung zum Festlegen der maximalen Speichermenge, die von Daten im Verlauf verwendet wird
  • FIFO-Modus wurde gestrichen (fehlendes Design)
  • Code Bereinigung und Modernisierung
  • g_paste_history_add ist jetzt voll übertragen
  • g_paste_keybinder_add_keybinding ist jetzt voll übertragen

Installation:

Verwenden Sie die folgenden Befehle, um es unter Ubuntu 13.10 , 13.04 , 12.10 oder 12.04 zu installieren :

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

Oder installieren Sie gpastedurch synaptic package manager(und auch gnome-shell-extensions-gpastewenn Sie Gnome-Shell verwenden).

Eine weitere Option ist die Installation durch software-center.

Bildbeschreibung hier eingeben

v2r
quelle
1

Ich versuche, eine bessere Lösung zu entwickeln, die kein Zwischenablage-Manager ist. Sie finden sie unter https://github.com/baitisj/copypasta . RTF und HTML werden noch nicht richtig verarbeitet, und große Bilder sind problematisch. Sie können jedoch Patches abspalten und übermitteln.

baitisj
quelle
1

Für das RTF-Format gehe ich folgendermaßen vor: Ich kopiere Text in die Zwischenablage der Anwendung. Wenn ich nicht sicher bin, ob es sich um rtf oder um was handelt, verwende ich diesen Befehl, um Folgendes zu überprüfen:

xclip -selection clipboard -o -t TARGETS

Wenn es so etwas ausgibt:

ZIELE

text / rtf

text / richtext

Also kann ich nicht widerstehen, ganz laut auszurufen: "Gee, das ist genial! Gott segne Linux!" Nach diesem erschossenen Gebet folgt nur die offensichtliche Sache:

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

Dann verarbeite ich alles in libreoffice und sende es als Spam an alle meine Freunde.

:-)

Xerostomus
quelle
0

Yo ya gnomers, das ist, was Sie für die Verwendung von CORBA-Mist bekommen.
Es gibt nichts Besseres für Ihre Software, als nicht standardmäßig installierte Tools zu verwenden.

Hätten Sie eine geeignete Desktop-Umgebung wie KDE-Plasma verwendet, hätten Sie dieses Problem nicht, da Sie nur dbus verwenden könnten, von welcher Software auch immer, z. B. von der Konsole:

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

Persönlich verbinde ich mich tatsächlich direkt mit C # mit dbus, was bedeutet, dass ich qdbus nicht benötige.
Das nützt dir wahrscheinlich nichts, da du keinen Klipper hast, aber ich dachte, ich würde es trotzdem erwähnen, nur um dich zu ärgern, wie es richtig gemacht wird.

PS: Kopieren Sie diesen C # -Code nicht, da Task.Result möglicherweise blockiert.

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();
}
Hexerei
quelle
-1

Ja da ist. Versuchen Sie, tmuxwelche weiter fortgeschritten ist als screen. Geben Sie zum Installieren von tmux Folgendes in das Terminal ein:

sudo apt-get install tmux

Versuchen Sie es auch gpm. Die Befehle gpmund tmuxkönnten eine gute Kombination sein ...

karthick87
quelle
2
Screen ist ein Emulator mit mehreren Terminals und kein Manager für die Zwischenablage.
Marco Ceppi
Es scheint , dass Bildschirm und tmux nur Arbeit am Terminal Ebene (ich kann keinen Hinweis finden „Zwischenablage“ in entweder ihre Info - Dokumentation) ... Was ich suche ist ein systemweite Zwischenablage kopieren und einfügen Dienstprogramm ... Ich hätte Terminal wahrscheinlich nicht als Tag verwenden sollen ... Die Art von Dienstprogramm, die ich möchte, kann über std-in / std-out oder file-in / file-out lesen / schreiben und mit Unicode umgehen / Rich-Text / Bild / etc Zwischenablage-Formate ...
Peter.O
Ich habe gerade einen Verweis auf stackoverflow gefunden ... gpmist für ein Nicht-X-Terminal "Zwischenablage" und GNU screenhat auch eine eigene "Zwischenablage" ... Ich verstehe jetzt, warum Sie sie erwähnt haben ... Das sind großartige Informationen und Es hat mich zu einem tieferen Verständnis dessen geführt, was sich hinter den Kulissen abspielt. Ich werde mich vorerst an das grundlegende XTerm-Auswahlsystem (clipboad) halten. Die Linux-Zwischenablage scheint so anders zu sein als Windows. Das, wonach ich gesucht habe, kann hier auf eine ganz andere Weise geschehen. +1 :)
Peter.O