Para alguns scripts, preciso colocar a palavra atualmente sob o cursor.
xdotool
Uma ferramenta similar ou pode obtê-lo?
Para alguns scripts, preciso colocar a palavra atualmente sob o cursor.
xdotool
Uma ferramenta similar ou pode obtê-lo?
Respostas:
Você pode obter o texto selecionado no momento com o comando:
echo $(xclip -o -sel)
... mas você precisa instalar xclip
primeiro:
sudo apt-get install xclip
De man xclip
:
-o, -out
prints the selection to standard out (generally for piping to a file or program)
e:
-selection
specify which X selection to use, options are "primary" to use XA_PRIMARY (default), "secondary" for XA_SECONDARY or "clipboard" for XA_CLIPBOARD
Veja também aqui ou, como sempre man xclip
,.
De um comentário, entendi que xclip
gera a última seleção, mesmo que não haja mais nada selecionado (por exemplo, quando o arquivo é fechado). Isso parece ser um problema na sua situação.
Embora xsel
também tenha esse problema, ele pode ser contornado: se fizermos o seu script não apenas ler a seleção atual no script, mas também gravar o mesmo conteúdo em um arquivo. Podemos então verificar se a nova seleção é diferente da última seleção. Caso contrário, podemos concluir que nenhuma nova seleção é feita, e o comando provavelmente produz uma seleção desatualizada. Podemos então dizer ao script para passar.
Um exemplo (using xsel
, que possui pequenas vantagens neste caso):
#!/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
Não é necessário dizer que você precisa instalar xsel
:
sudo apt-get install xsel
xclip
retorna o último texto selecionado.
Error: Target STRING not available
e sai.