Für einige Skripte muss ich das Wort aktuell unter dem Cursor haben.
Kann xdotool
oder ein ähnliches Tool es bekommen?
Für einige Skripte muss ich das Wort aktuell unter dem Cursor haben.
Kann xdotool
oder ein ähnliches Tool es bekommen?
Antworten:
Sie können den aktuell ausgewählten Text mit dem folgenden Befehl abrufen:
echo $(xclip -o -sel)
... aber Sie müssen xclip
zuerst installieren :
sudo apt-get install xclip
Von man xclip
:
-o, -out
prints the selection to standard out (generally for piping to a file or program)
und:
-selection
specify which X selection to use, options are "primary" to use XA_PRIMARY (default), "secondary" for XA_SECONDARY or "clipboard" for XA_CLIPBOARD
Siehe auch hier oder wie immer man xclip
.
Aus einem Kommentar habe ich verstanden, dass xclip
die letzte Auswahl ausgegeben wird, auch wenn nichts mehr ausgewählt ist (z. B. wenn die Datei geschlossen ist). Das scheint ein Problem in Ihrer Situation zu sein.
Obwohl es xsel
auch dieses Problem gibt, kann es umgangen werden: Wenn wir Ihr Skript dazu bringen, nicht nur die aktuelle Auswahl in das Skript zu lesen, sondern auch den gleichen Inhalt in eine Datei zu schreiben. Wir können dann prüfen, ob sich die neue Auswahl von der letzten Auswahl unterscheidet. Wenn nicht, können wir daraus schließen, dass keine neue Auswahl getroffen wird und der Befehl höchstwahrscheinlich eine veraltete Auswahl erzeugt. Wir können dann das Skript anweisen, zu bestehen.
Ein Beispiel (mit xsel
, was in diesem Fall leichte Vorteile hat):
#!/bin/bash
# make sure the file to store the last selection exists
f=~/.old_sel
touch $f
# get the previous & current selection
old=$(cat "$f"); new=$(xsel -o)
if [ "$old" != "$new" ]; then
# if selection changed, store the new selection to remember
echo "$new" > "$f"
# do the action, whatever that may be
echo $new
fi
Sie müssen nicht sagen, dass Sie Folgendes installieren müssen xsel
:
sudo apt-get install xsel
xclip
gibt, wird der zuletzt ausgewählte Text zurückgegeben.
Error: Target STRING not available
und wird beendet.