Per alcuni script, devo mettere la parola attualmente sotto il cursore.
Può xdotool
uno strumento simile ottenerlo?
Per alcuni script, devo mettere la parola attualmente sotto il cursore.
Può xdotool
uno strumento simile ottenerlo?
Risposte:
Puoi ottenere il testo attualmente selezionato con il comando:
echo $(xclip -o -sel)
... ma dovresti xclip
prima installare :
sudo apt-get install xclip
Da 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
Vedi anche qui o, come sempre man xclip
,.
Da un commento, ho capito che xclip
genera l' ultima selezione, anche se non c'è più nulla di selezionato (ad esempio quando il file è chiuso). Questo sembra essere un problema nella tua situazione.
Sebbene xsel
abbia anche questo problema, può essere aggirato: se creiamo il tuo script non solo leggiamo la selezione corrente nello script, ma scriviamo anche lo stesso contenuto in un file. Possiamo quindi verificare se una nuova selezione è diversa dall'ultima selezione. In caso contrario, possiamo concludere che non viene effettuata alcuna nuova selezione e il comando molto probabilmente produce una selezione obsoleta. Possiamo quindi dire allo script di passare.
Un esempio (utilizzo xsel
, che presenta lievi vantaggi in questo 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
Non c'è bisogno di dire che avresti bisogno di installare xsel
:
sudo apt-get install xsel
xclip
restituisce l' ultimo testo selezionato.
Error: Target STRING not available
ed esce.