zur Übersicht

nächste Seite


Programmfenster Zwischenablage

Die Ausführungen der vorherigen Seiten über Programmfenster werden hier weitergeführt.
Generell gilt bei den weißen Textstellen auf dieser Seite: Man fügt die Zeichenfolge aus dem weißen Feld bei dem blinkenden Cursor des Terminals ein - dann drückt man die Eingabetaste. 
Oder man fügt die Zeichenfolge aus dem weißen Feld bei dem blinkenden Cursor des Editors ein.  
Dann drückt man zum Abspeichern gleichzeitig Strg und O 
dann drückt man die Eingabetaste um den Dateinamen zu bestätigen 
dann drückt man zum Verlassen des Editors gleichzeitig Strg und X.


Man kennt das Kopieren und Einfügen. Dazu kann man einen Text markieren und  mit der Tastenkombination Strg+C kopieren und mit Strg+V einfügen. Oder man benutzt das Menü das durch Drücken mit der rechten Maustaste auf den markierten Bereich erscheint und wählt Kopieren und entsprechend an der Stelle des blinkenden Cursors Einfügen. Das Kopierte wird in der Zwischenablage zwischengespeichert - unter Linux nennt man diese Zwischenablage clipboard. Aber unter Linux gibt es mehr als eine Zwischenablage. Zum Verdeutlichen kann man neben dem Browser-Fenster ein Textprogramm-Fenster (gedit oder LibreOffice) platzieren. Kopiert man nun den Text
Programmfenster
im Browserfenster und markiert anschließend den Text
Zwischenablage
ohne diesen zu kopieren (also lediglich markieren) so kann man durch Mausradklicken im Textprogramm-Fenster Zwischenablage einfügen und anschließend durch Strg+V Programmfenster einfügen und wieder durch Mausradklicken Zwischenablage einfügen und durch Rechtsklick und Einfügen Programmfenster einfügen. Allein durch die Markierung wird in einer anderen Zwischenablage dieses hinterlegt. Unter Linux nennt man diese Zwischenablage  primary. 

Nun kann man sich fragen ob man weitere "Zwischenablagen" erzeugen kann in denen feste Texte hinterlegt sind (etwa Adresse, Datum, e-mail, oft benutzte Absätze) die man dann schnell abrufen kann. Dazu gibt es natürlich entsprechende Software aber man kann auch mit einfachem script eine Lösung finden.
Als erstes installiert man das Programm
xclip
etwa über synaptic. Damit wird eine Verbindung von Zwischenablage und Terminal hergestellt. Dann kann man einen versteckten Ordner erzeugen, der Speicherplätze für Einträge aufnimmt die dann in die Zwischenablage übernommen werden

mkdir ~/.meine_zwischenablage

Dort kann man Speicherplätze als txt-Dateien hinterlegen. Um den Überblick zu wahren wurden nur 8 Speicherplätze verwendet. Je mehr Plätze vorhanden sind umso mehr muß man suchen.

for i in {1..8}; do echo Speicherplatz$i > ~/.meine_zwischenablage/zA$i.txt; done

Zunächst kopiert man die Zeichenfolge aus dem darunterliegenden weißen Feld und fügt diese im Terminal ein - OHNE die Eingabetaste zu drücken. 

xclip -o > ~/.meine_zwischenablage/zA8.txt

Dann kopiert man
e-mail-adresse
und geht zum Terminal zurück und drückt die Eingabetaste. So wird mittels xclip der Text
e-mail-adresse
aus der Zwischenablage in die Datei zA8.txt geschrieben. Gibt man umgekehrt ein

xclip -i < ~/.meine_zwischenablage/zA8.txt

So wird der Text
e-mail-adresse
aus der Datei zA8.txt in die Zwischenablage geschrieben (als default wird primary verwendet). Mit Mausradklick kann dies irgendwo eingefügt werden. Möchte man daß das Einfügen mit Strg+V und dem Kontextmenü mit Rechtsklick und Einfügen funktioniert muß man clipboard verwenden:

xclip -i -selection clipboard < ~/.meine_zwischenablage/zA8.txt

Man kann dann Texte hinterlegen die tausende von Textzeichen enthalten und auch Texte die mit Zeilenumbruch über mehrere Zeilen verteilt sind. Um bei der Anzeige dieser Texte die Übersicht zu wahren werden in der Vorschau im zenity-Fenster die Einträge auf 3 Zeilen und die Zeichen 1 bis 60 pro Zeile beschränkt. Man soll die Einträge ohne übermäßige Zeichenflut schnell erkennen können. Dies erreicht man mit: 
zA1=$(cat ~/.meine_zwischenablage/zA1.txt | cut -c 1-60 | head -n 3)
Dann wird das script erstellt

nano ~/.meine_zwischenablage/scZWISCHEN.sh

In den Editor eingeben

#!/bin/bash

rT=3

while [ $rT -eq 3 ]

do

zA1=$(cat ~/.meine_zwischenablage/zA1.txt | cut -c 1-60 | head -n 3)
zA2=$(cat ~/.meine_zwischenablage/zA2.txt | cut -c 1-60 | head -n 3)
zA3=$(cat ~/.meine_zwischenablage/zA3.txt | cut -c 1-60 | head -n 3)
zA4=$(cat ~/.meine_zwischenablage/zA4.txt | cut -c 1-60 | head -n 3)
zA5=$(cat ~/.meine_zwischenablage/zA5.txt | cut -c 1-60 | head -n 3)
zA6=$(cat ~/.meine_zwischenablage/zA6.txt | cut -c 1-60 | head -n 3)
zA7=$(cat ~/.meine_zwischenablage/zA7.txt | cut -c 1-60 | head -n 3)
zA8=$(cat ~/.meine_zwischenablage/zA8.txt | cut -c 1-60 | head -n 3)

szZW=$(zenity --list --ok-label "In die Zwischenablage kopieren" --cancel-label "Neuen Eintrag aus Zwischenablage hinzufügen" --title "In die Zwischenablage kopieren" --text "Einen Eintrag auswählen. Doppelklick auf Eintrag möglich." --column "hinterlegte Einträge" "DATUM" "1.$zA1" "2.$zA2" "3.$zA3" "4.$zA4" "5.$zA5" "6.$zA6" "7.$zA7" "8.$zA8" --width=680 --height=560 2> /dev/null)

if [ $? -eq 0 ]; then

if [ $szZW = "DATUM" ]; then

date +%d.%m.%Y | xclip -i -selection primary
date +%d.%m.%Y | xclip -i -selection clipboard
rT=1

else

szSP=$(echo zA${szZW:0:1}.txt)
cat ~/.meine_zwischenablage/$szSP | xclip -i -selection primary
cat ~/.meine_zwischenablage/$szSP | xclip -i -selection clipboard
rT=1

fi

else

szZSP=$(zenity --list --ok-label "Neuen Eintrag aus der Zwischenablage speichern" --cancel-label "Beenden" --title "Neuen Eintrag speichern" --text "Speicherplatz für den neuen Eintrages wählen" --column "Auswahl der Speicherplätze" "A1:$zA1" "A2:$zA2" "A3:$zA3" "A4:$zA4" "A5:$zA5" "A6:$zA6" "A7:$zA7" "A8:$zA8" --width=680 --height=560 2> /dev/null)

if [ $? -eq 0 ]; then

szSP=$(echo z${szZSP:0:2}.txt)
xclip -o > ~/.meine_zwischenablage/$szSP
rT=3

else

exit

fi

fi

done

Nun muß man die Datei ausführbar machen

chmod +x ~/.meine_zwischenablage/scZWISCHEN.sh

Der Aufruf des scriptes erfolgt mit

~/.meine_zwischenablage/scZWISCHEN.sh

Um damit gut arbeiten zu können verwendet man zum Starten dieses scriptes am besten eine Tastenkombination, vielleicht
Alt+V
Das Vorgehen der Zuordnung einer Tastenkombination ist beschrieben auf

Debian Gnome (Teil2) Terminal

Wenn die Tastenkombination zum Starten des scriptes eingerichtet ist geht man so vor:
Man setzt den Cursor an die Stelle an der etwas eingefügt werden soll. Dann drückt man Alt+V und wählt durch Doppelklick mit der Maus (oder mit Tastenkombinationen) den Eintrag der eingefügt werden soll. Dann drückt man Strg+V. 
Auch das Menü über rechte Maustaste oder Mausradklick kann man zum Einfügen benutzen, aber wie üblich ist dabei darauf zu achten daß man die genaue Position des Cursors trifft.

Es gibt keine Schaltfläche zum Beenden des obigen Fensters - aber man kann einfach irgendwas in die Zwischenablage kopieren um das Fenster zu schließen.

Die Einträge lassen sich leicht ändern durch Drücken der Schaltfläche
Neuen Eintrag aus Zwischenablage hinzufügen
Man markiert (kopiert) das Gewünschte und wählt dann einen Speicherplatz. Damit wird der Inhalt der Zwischenablage (primary) an dem gewählten Speicherplatz hinterlegt - der alte Inhalt des Speicherplatzes geht dabei natürlich verloren.

Hat man die meisten Speicherplätze mit wichtigen Einträgen versehen und braucht man dann doch für ein Projekt weitere Speicherplätze kann man den Ordner 
~/.meine_zwischenablage
kopieren und mit anderem Namen versehen. Die alte
~/.meine_zwischenablage
kann einfach mit neuen Einträgen überschreiben werden. Durch Umbenennen des kopierten Ordners kann der frühere Zustand schnell wiederhergestellt werden.

Und man kann sogar noch mehr machen. Kopierte Daten können in der Zwischenablage bearbeitet werden und dann in veränderter Form zum Einfügen bereit gestellt werden. Ein Beispiel dazu:

Angenommen es liegt der oben blau hinterlegte Text vor in einer schmalen Spalte und mit Siblentrennungszeichen. Dann kann man diesen einfach markieren und in der daruntergezeigten Form einfügen, ohne Silbentrennung in der ganzen Seitenbreite und mit Erhaltung der Einrückung und der Absätze. 
Dazu holt man mit xclip die Daten aus der Zwischenablage und bearbeitet diese mit sed:
Am Anfang jeder Zeile wird QQ geschrieben, das Silbentrennzeichen am Ende der Zeile wird durch YY ersetzt, am Ende jeder Zeile wird YY geschrieben. Dann werden alle Zeilen zu einer Zeile reduziert. Die Kombination YYQQYYQQ wird durch einen doppelten Zeilenumbruch ersetzt, die Kombination YYYYQQ wird gelöscht, die Kommbination YYQQ wird durch ein Leerzeichen ersetzt, die anderen YY QQ Kombinationen werden gelöscht.
Dann wird das Zenity-Fenster um einen weiteren Eintrag
UMBRUCH-ENTFERNEN
ergänzt und die dazugehörenden Befehle hinterlegt. Das neue script sieht dann so aus:

#!/bin/bash

rT=3

while [ $rT -eq 3 ]

do

zA1=$(cat ~/.meine_zwischenablage/zA1.txt | cut -c 1-60 | head -n 3)
zA2=$(cat ~/.meine_zwischenablage/zA2.txt | cut -c 1-60 | head -n 3)
zA3=$(cat ~/.meine_zwischenablage/zA3.txt | cut -c 1-60 | head -n 3)
zA4=$(cat ~/.meine_zwischenablage/zA4.txt | cut -c 1-60 | head -n 3)
zA5=$(cat ~/.meine_zwischenablage/zA5.txt | cut -c 1-60 | head -n 3)
zA6=$(cat ~/.meine_zwischenablage/zA6.txt | cut -c 1-60 | head -n 3)
zA7=$(cat ~/.meine_zwischenablage/zA7.txt | cut -c 1-60 | head -n 3)
zA8=$(cat ~/.meine_zwischenablage/zA8.txt | cut -c 1-60 | head -n 3)

szZW=$(zenity --list --ok-label "In die Zwischenablage kopieren" --cancel-label "Neuen Eintrag aus Zwischenablage hinzufügen" --title "In die Zwischenablage kopieren" --text "Einen Eintrag auswählen. Doppelklick auf Eintrag möglich." --column "hinterlegte Einträge" "DATUM" "1.$zA1" "2.$zA2" "3.$zA3" "4.$zA4" "5.$zA5" "6.$zA6" "7.$zA7" "8.$zA8" "UMBRUCH-ENTFERNEN" --width=680 --height=560 2> /dev/null)

if [ $? -eq 0 ]; then

if [ $szZW = "DATUM" ]; then

date +%d.%m.%Y | xclip -i -selection primary
date +%d.%m.%Y | xclip -i -selection clipboard
rT=1

elif [ $szZW = "UMBRUCH-ENTFERNEN" ]; then

xclip -o | sed 's|^|QQ|g' | sed 's|-$|YY|g' | sed 's|$|YY|g' | tr -d '\n' | sed 's|YYQQYYQQ|\n\n|g' | sed 's|YYYYQQ||g' | sed 's|YYQQ| |g' | sed 's|YY$||g' | sed 's|^QQ||g' > ~/.meine_zwischenablage/zAA.txt
cat ~/.meine_zwischenablage/zAA.txt | xclip -i -selection primary
cat ~/.meine_zwischenablage/zAA.txt | xclip -i -selection clipboard
rT=1

else

szSP=$(echo zA${szZW:0:1}.txt)
cat ~/.meine_zwischenablage/$szSP | xclip -i -selection primary
cat ~/.meine_zwischenablage/$szSP | xclip -i -selection clipboard
rT=1

fi

else

szZSP=$(zenity --list --ok-label "Neuen Eintrag aus der Zwischenablage speichern" --cancel-label "Beenden" --title "Neuen Eintrag speichern" --text "Speicherplatz für den neuen Eintrages wählen" --column "Auswahl der Speicherplätze" "A1:$zA1" "A2:$zA2" "A3:$zA3" "A4:$zA4" "A5:$zA5" "A6:$zA6" "A7:$zA7" "A8:$zA8" --width=680 --height=560 2> /dev/null)

if [ $? -eq 0 ]; then

szSP=$(echo z${szZSP:0:2}.txt)
xclip -o > ~/.meine_zwischenablage/$szSP
rT=3

else

exit

fi

fi

done

Man markiert die gewünschte Textstelle. Dann drückt man Alt+V und wählt durch Doppelklick mit der Maus (oder mit Tastenkombinationen) den Eintrag
UMBRUCH-ENTFERNEN
Dann sucht man die Stelle zum Einfügen und drückt Strg+V. 
Auch das Menü über rechte Maustaste oder Mausradklick kann man zum Einfügen benutzen.

zur Übersicht

nächste Seite