Nhận từ dưới con trỏ trong X11


9

Đối với một số tập lệnh, tôi cần lấy từ hiện tại dưới con trỏ.

Có thể xdotoolhoặc một công cụ tương tự có được nó?


Bạn có nghĩa là từ được chọn ? Vậy thì được. (Nhưng không phải xdotool)
Jacob Vlijm

Câu trả lời:


10

Cách lấy văn bản hiện được chọn

Bạn có thể nhận được văn bản hiện được chọn bằng lệnh:

echo $(xclip -o -sel)

... nhưng bạn cần cài đặt xcliptrước:

sudo apt-get install xclip

Từ man xclip:

-o, -out
    prints the selection to standard out (generally for piping to a file or program) 

và:

-selection
    specify which X selection to use, options are "primary" to use XA_PRIMARY (default), "secondary" for XA_SECONDARY or "clipboard" for XA_CLIPBOARD

Xem thêm ở đây hoặc, như mọi khi , man xclip.


BIÊN TẬP

Vấn đề giải quyết với lựa chọn cuối cùng

Từ một bình luận, tôi hiểu rằng đưa xclipra lựa chọn cuối cùng , ngay cả khi không còn lựa chọn nào nữa (ví dụ: khi tệp được đóng). Đó dường như là một vấn đề trong tình huống của bạn.

Mặc dù xselcũng có vấn đề này, nó có thể được giải quyết: nếu chúng tôi làm cho tập lệnh của bạn không chỉ đọc lựa chọn hiện tại vào tập lệnh mà còn ghi cùng một nội dung vào một tệp. Sau đó chúng ta có thể kiểm tra xem lựa chọn mới có khác với lựa chọn cuối cùng không. Nếu không, chúng ta có thể kết luận không có lựa chọn mới nào được thực hiện và lệnh rất có thể tạo ra một lựa chọn lỗi thời. Sau đó chúng ta có thể nói kịch bản để vượt qua.

Một ví dụ (sử dụng xsel, có một chút lợi thế trong trường hợp này):

#!/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

Không cần phải nói rằng bạn cần phải cài đặt xsel:

sudo apt-get install xsel

Có cách nào để làm điều đó mà không cần lựa chọn?
Đại

1
@BharadwajRaju Điều đó thực sự làm tôi ngạc nhiên, ứng dụng hiện tại để liên lạc là gì? Bạn sẽ không biết! Nó sẽ yêu cầu một số nhận dạng văn bản toàn cầu về những gì xảy ra trên màn hình. Và thậm chí sau đó..tôi không thấy điều đó xảy ra.
Jacob Vlijm

Có cách nào để tìm nếu có bất kỳ văn bản hiện đang được chọn? Bởi vì ngay cả khi không có, xcliptrả về văn bản được chọn cuối cùng .
Đại

@BharadwajRaju xem cập nhật của tôi.
Jacob Vlijm

Đôi khi (ngẫu nhiên) nó trở lại Error: Target STRING not availablevà thoát.
Đại
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.