Pour certains scripts, j'ai besoin de placer le mot actuellement sous le curseur.
Peut xdotool
ou un outil similaire obtenir?
Pour certains scripts, j'ai besoin de placer le mot actuellement sous le curseur.
Peut xdotool
ou un outil similaire obtenir?
Réponses:
Vous pouvez obtenir le texte actuellement sélectionné avec la commande:
echo $(xclip -o -sel)
... mais vous devez d' xclip
abord installer :
sudo apt-get install xclip
De man xclip
:
-o, -out
prints the selection to standard out (generally for piping to a file or program)
et:
-selection
specify which X selection to use, options are "primary" to use XA_PRIMARY (default), "secondary" for XA_SECONDARY or "clipboard" for XA_CLIPBOARD
Voir aussi ici ou, comme toujours, man xclip
.
D'après un commentaire, j'ai compris que xclip
sort la dernière sélection, même s'il n'y a plus rien de sélectionné (par exemple lorsque le fichier est fermé). Cela semble être un problème dans votre situation.
Bien qu'il ait xsel
également ce problème, il peut être résolu: si nous faisons que votre script non seulement lit la sélection actuelle dans le script, mais écrit également le même contenu dans un fichier. Nous pouvons alors vérifier si la nouvelle sélection est différente de la dernière sélection. Sinon, nous pouvons conclure qu'aucune nouvelle sélection n'est effectuée, et la commande produit très probablement une sélection obsolète. On peut alors dire au script de passer.
Un exemple (utilisation xsel
, qui présente de légers avantages dans ce cas):
#!/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
Inutile de dire que vous devez installer xsel
:
sudo apt-get install xsel
xclip
retourne le dernier texte sélectionné.
Error: Target STRING not available
et se termine.