web-dev-qa-db-ja.com

X11でカーソルの下にWordを取得する

一部のスクリプトでは、現在カーソルの下にあるWordを取得する必要があります。

xdotoolまたは同様のツールで取得できますか?

8

現在selectedテキストを取得する方法

現在のselectedテキストをコマンドで取得できます:

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

here または、いつものようにman xclipも参照してください。


編集

最後の選択に関する回避策の問題

コメントから、xcliplast選択を出力することがわかりました。選択されたものがもう何もない場合でも(たとえば、ファイルを閉じたとき) 。それはあなたの状況の問題のようです。

xselにもこの問題がありますが、回避することができます。現在の選択をスクリプトに読み込むだけでなく、also同じコンテンツをファイルに書き込みます。次に、new選択が最後の選択と異なるかどうかを確認できます。そうでない場合、新しい選択は行われず、コマンドが古い選択を生成する可能性が高いと結論付けることができます。その後、スクリプトに合格するように指示できます。

例(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
9
Jacob Vlijm