สำหรับการเขียนสคริปต์ฉันต้องได้รับคำในขณะนี้ภายใต้เคอร์เซอร์
สามารถxdotool
หรือเครื่องมือที่คล้ายกันได้หรือไม่
สำหรับการเขียนสคริปต์ฉันต้องได้รับคำในขณะนี้ภายใต้เคอร์เซอร์
สามารถxdotool
หรือเครื่องมือที่คล้ายกันได้หรือไม่
คำตอบ:
คุณสามารถรับข้อความที่เลือกในปัจจุบันด้วยคำสั่ง:
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
ดูเพิ่มเติมที่นี่man xclip
หรือเป็นเสมอ
จากความคิดเห็นฉันเข้าใจว่าให้xclip
ผลลัพธ์การเลือกสุดท้ายแม้ว่าจะไม่ได้เลือกอะไรอีกแล้ว (เช่นเมื่อปิดไฟล์) ดูเหมือนว่าจะเป็นปัญหาในสถานการณ์ของคุณ
แม้ว่าจะxsel
มีปัญหานี้ด้วย แต่ก็สามารถแก้ไขได้: หากเราทำให้สคริปต์ของคุณไม่เพียง แต่อ่านสิ่งที่เลือกปัจจุบันลงในสคริปต์ แต่ยังเขียนเนื้อหาเดียวกันลงในไฟล์ จากนั้นเราสามารถตรวจสอบว่าตัวเลือกใหม่นั้นแตกต่างจากการเลือกล่าสุดหรือไม่ หากไม่มีเราสามารถสรุปได้ว่าไม่มีการเลือกใหม่และคำสั่งส่วนใหญ่จะสร้างการเลือกที่ล้าสมัย จากนั้นเราสามารถบอกสคริปต์ให้ผ่านได้
ตัวอย่าง (ใช้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
xclip
ส่งคืนข้อความที่เลือกล่าสุด
Error: Target STRING not available
และออก