Untuk beberapa skrip, saya perlu mendapatkan kata saat ini di bawah kursor.
Bisakah xdotool
atau alat serupa mendapatkannya?
Untuk beberapa skrip, saya perlu mendapatkan kata saat ini di bawah kursor.
Bisakah xdotool
atau alat serupa mendapatkannya?
Jawaban:
Anda bisa mendapatkan teks yang saat ini dipilih dengan perintah:
echo $(xclip -o -sel)
... tetapi Anda harus menginstal xclip
terlebih dahulu:
sudo apt-get install xclip
Dari man xclip
:
-o, -out
prints the selection to standard out (generally for piping to a file or program)
dan:
-selection
specify which X selection to use, options are "primary" to use XA_PRIMARY (default), "secondary" for XA_SECONDARY or "clipboard" for XA_CLIPBOARD
Lihat juga di sini atau, seperti biasa man xclip
,.
Dari komentar, saya mengerti bahwa xclip
menampilkan pilihan terakhir , bahkan jika tidak ada yang dipilih lagi (misalnya ketika file ditutup). Itu tampaknya menjadi masalah dalam situasi Anda.
Meskipun xsel
juga memiliki masalah ini, ini dapat diselesaikan: jika kami membuat skrip Anda tidak hanya membaca pilihan saat ini menjadi skrip, tetapi juga menulis konten yang sama ke file. Kami kemudian dapat memeriksa apakah pilihan baru berbeda dari pilihan terakhir. Jika tidak, kita dapat menyimpulkan tidak ada pilihan baru yang dibuat, dan perintah yang paling mungkin menghasilkan seleksi yang sudah ketinggalan zaman. Kami kemudian dapat memberitahu skrip untuk lulus.
Contoh (menggunakan xsel
, yang memiliki sedikit keuntungan dalam kasus ini):
#!/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
Tidak perlu mengatakan bahwa Anda harus menginstal xsel
:
sudo apt-get install xsel
xclip
kembalikan teks yang dipilih terakhir .
Error: Target STRING not available
dan keluar.