Для деяких сценаріїв мені потрібно отримати слово, яке зараз знаходиться під курсором.
Може отримати xdotool
чи подібний інструмент?
Для деяких сценаріїв мені потрібно отримати слово, яке зараз знаходиться під курсором.
Може отримати xdotool
чи подібний інструмент?
Відповіді:
Ви можете отримати поточно вибраний текст за допомогою команди:
echo $(xclip -o -sel)
... але вам потрібно спочатку встановити xclip
:
sudo apt-get install xclip
Від man xclip
:
-o, -out
prints the selection to standard out (generally for piping to a file or program)
і:
-selection
specify which X selection to use, options are "primary" to use XA_PRIMARY (default), "secondary" for XA_SECONDARY or "clipboard" for XA_CLIPBOARD
Дивіться також тут , або, як завжди, man xclip
.
З коментаря я зрозумів, що xclip
видає останній вибір, навіть якщо вже нічого не вибрано (наприклад, коли файл закритий). Це, здається, є проблемою у вашій ситуації.
Хоча xsel
також є ця проблема, її можна вирішити: якщо ми зробимо ваш сценарій не тільки прочитати поточний вибір у сценарій, але і записати той самий вміст у файл. Потім ми можемо перевірити, чи відрізняється новий вибір від останнього. Якщо ні, то можна зробити висновок, що новий вибір не робиться, і команда, швидше за все, створює застарілий вибір. Потім ми можемо сказати сценарій пройти.
Приклад (використання xsel
, яке має в цьому випадку невеликі переваги):
#!/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
Не потрібно говорити, що вам потрібно буде встановити xsel
:
sudo apt-get install xsel
xclip
повертає останній вибраний текст.
Error: Target STRING not available
і виходить.