W przypadku niektórych skryptów muszę umieścić słowo pod kursorem.
Czy może xdotool
to zrobić podobne narzędzie?
W przypadku niektórych skryptów muszę umieścić słowo pod kursorem.
Czy może xdotool
to zrobić podobne narzędzie?
Odpowiedzi:
Możesz pobrać aktualnie zaznaczony tekst za pomocą polecenia:
echo $(xclip -o -sel)
... ale najpierw musisz zainstalować xclip
:
sudo apt-get install xclip
Od man xclip
:
-o, -out
prints the selection to standard out (generally for piping to a file or program)
i:
-selection
specify which X selection to use, options are "primary" to use XA_PRIMARY (default), "secondary" for XA_SECONDARY or "clipboard" for XA_CLIPBOARD
Zobacz również tutaj lub, jak zawsze man xclip
.
Z komentarza zrozumiałem, że xclip
wypisuje ostatni wybór, nawet jeśli nic już nie jest zaznaczone (np. Kiedy plik jest zamknięty). To wydaje się być problemem w twojej sytuacji.
Chociaż występuje xsel
również ten problem, można go obejść: jeśli sprawimy, że skrypt nie tylko wczyta bieżący wybór do skryptu, ale także zapisze tę samą zawartość do pliku. Następnie możemy sprawdzić, czy nowy wybór różni się od ostatniego wyboru. Jeśli nie, możemy stwierdzić, że nie dokonano żadnego nowego wyboru, a polecenie najprawdopodobniej wywołuje nieaktualne zaznaczenie. Następnie możemy nakazać skryptowi przejście.
Przykład (użycie xsel
, które w tym przypadku ma niewielkie zalety):
#!/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
Nie musisz mówić, że musisz zainstalować xsel
:
sudo apt-get install xsel
xclip
zwraca ostatni zaznaczony tekst.
Error: Target STRING not available
i wychodzi.