Linux Tool der Woche: xclip

Eigentlich kann xclip nur zwei Dinge tun: Informationen von der Textkonsole oder einer Datei in der X-Windows Zwischenablage (Clipboard) speichern und den aktuellen Inhalt der Zwischenablage anzeigen. Das klingt nach sehr wenig. Bei Lichte betrachtet stellt sich aber bald heraus, wie nützlich dieses kleine Utility in der Praxis sein kann. Zusammen mit einer Clipboard Verwaltung wie Parcellite lassen sich Arbeitsschritte beim Umkopieren von Informationen vereinfachen und automatisieren. So können Dateien oder Teile daraus sehr einfach in einer Textverarbeitung eingefügt werden, ohne dass die Ausgangsdatei zuerst geöffnet werden muss. Gleich verhält es sich mit der Ausgabe von Befehlen, die in einer Dokumentation Verwendung finden sollen. Hier sind einige Beispiele:

1. xclip
2. xclip /etc/motd
3. uptime ¦ xclip
4. xclip -o

Im ersten Beispiel kommt xclip ohne Kommandozeilenargumente aus. Es wartet damit auf eine Eingabe von der Tastatur und speichert diese im Clipboard, sobald die Eingabe mit Ctrl+E abgeschlossen wird. Nun kann der Inhalt des Clipboards durch das drücken des mittleren Mausknopf oder durch Bearbeiten/Einfügen an jeder beliebigen Stelle wieder eingesetzt werden. Falls letzteres jetzt nicht funktioniert: bitte weiterlesen.

Im zweitehn Beispiel wird der Inhalt einer Datei in die Zwischenablage kopiert. In unserem Beispiel ist es motd. Diese Datei existiert auf fast allen UNIX-Systemen und enthält aktuelle Mitteilungen des Systemadministrators oder irgend ein Tagesmotto (motd – message of the day). Das dritte Beispiel zeigt, wie mit dem Pipe-Operator auch die Ausgabe eines Kommandos genutzt werden kann.

Mit dem vierten und letzten Exempel wird der zuletzt abgelegte Inhalt wieder angezeigt. Selbstverständlich kann auch die Ausgabe von xclip in eine Datei umgeleitet oder an einen Prozess übergeben werden. So ist UNIX :-)

Wer nun aber versucht, mit xclip einen Text abzulegen und dann in einem Texteditor wie gedit einzufügen, erlebt eine Enttäuschung, denn gedit verhält sich so, als ob die Zwischenablage leer wäre. Ebenso sind die Inhalte in Parcellite nicht zu sehen. Wir sind damit auf ein Problem gestossen, mit dem jeder UNIX/Linux Anwender eher früher als später konfrontiert wird: X-Windows kennt historisch begründet nicht eine, sondern mehrere Zwischenablagen. Genaugenommen sind es acht, von denen in der Praxis aber nur drei genutzt werden: PRIMARY, SECONDARY und CLIPBOARD. Was hat es damit auf sich?

In X-Windows wird jede Auswahl sofort unter PRIMARY abgelegt. Wenn wir also mit der Maus ein paar Wörter im Editor markieren, gehen diese sofort in die PRIMARY-Ablage. Von dort können sie durch das Klicken auf den mittleren Mausknopf jederzeit wieder eingefügt werden.

Applikationen, die das Befehlspaar Bearbeiten/Kopieren und Bearbeiten/Einfügen kennen, verwenden in den meisten Fällen den CLIPBOARD-Speicher. Wenn wir also gedit starten und mit Ctrl+C oder dem Bearbeiten-Menu einen Textblock kopieren, befindet sich dieser in CLIPBOARD. Von hier aus kann er in anderen «Copy/Paste» Anwendungen wieder eingesetzt werden. Das Klicken der mittleren Maustaste liefert aber weiterhin den Inhalt aus PRIMARY.

Ein Dokument auf freedesktop.org erläutert dieses Problem im Detail und empfiehlt, für Applikationen nur noch das neuere, explizite Copy/Paste Verfahren zu verwenden.

Und zum Schluss noch die gute Nachricht: xclip kennt eine Option, mit der bestimmt werden kann, welche X-Windows Zwischenablage verwendet werden soll. Wenn wir noch einmal den Inhalt einer Datei kopieren und diesmal mit -selection die «richtige» Auswahl angeben, dann kann der Text auch mit gedit, Parcellite oder einer beliebigen andern KDE/GNOME-Anweundung verwendet werden:

xclip -selection CLIPBOARD /etc/motd

Und für einmal dürfen wir mit gutem Gewissen sagen: It’s not a bug, jim. It’s a feature!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.