Для некоторых сценариев мне нужно получить слово в данный момент под курсором.
Может 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
и уходит.