W przypadku niektórych skryptów muszę umieścić słowo pod kursorem.
Czy może xdotoolto zrobić podobne narzędzie?
W przypadku niektórych skryptów muszę umieścić słowo pod kursorem.
Czy może xdotoolto 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 xclipwypisuje 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 xselró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
xclipzwraca ostatni zaznaczony tekst.
Error: Target STRING not availablei wychodzi.