Câu trả lời:
Câu chuyện dài:
Sử dụng một kịch bản.
#! /bin/sh
# With some window selection magic, or a sleep
# if you want to do that manually.
xdotool type word
xdotool key Return
Và đặt đường dẫn của kịch bản vào Exec
trường.
Câu chuyện dài:
Theo xdotool
trang hướng dẫn :
type
Supports newlines and tabs (ASCII newline and tab).
With respect to "COMMAND CHAINING", this command consumes the
remainder of the arguments and types them. That is, no commands can
chain after 'type'.
Lệnh chuỗi thông qua ;
hoặc &
không thể thực hiện được, vì đó là cú pháp shell và Ứng dụng khởi động không hỗ trợ cú pháp shell. Tuy nhiên, nếu tất cả những gì bạn muốn làm là nhấn Entersau khi gõ một cái gì đó, có một cách làm tròn để làm như vậy.
Khi nó nói dòng mới "ASCII", nó không có nghĩa là trần \n
. Và thay thế lệnh ( xdotool type "$(printf '\n')"
, nói) ăn các dòng mới. Sau xdotools
bài đăng diễn đàn này , tôi đã thử điều này:
xdotool type "$(printf 'date\n ')"
Va no đa hoạt động. Nhưng nó chỉ hoạt động nếu có một số nhân vật sau đó \n
, và điều này rõ ràng để lại một khoảng trống, đó sẽ không phải là những gì bạn muốn. Tôi đã sửa đổi nó thành:
xdotool type "$(printf 'date\n\e ')"
Và điều này hoạt động và không để lại không gian dấu. Tuy nhiên, nó có thể gây ra sự cố cho những người sử dụng chế độ Vi trong vỏ của họ.
Nhờ những bình luận của @ Steeldo mà tôi nhận ra rằng điều này là do tôi đã thử nó trên chính thiết bị đầu cuối mà tôi đang thực hiện các lệnh trên. Chỉ cần một khoảng cách nhỏ giữa việc nhấn Entervà xdotool
lệnh của tôi là đủ để một dòng mới được đăng ký chính xác. Như vậy:
sleep 0.1; xdotool type $'date\n'
Vì vậy, hoặc mở rộng dòng bằng cách trích dẫn nó:
xdotool type 'date
'
hoặc sử dụng giải thích shell như @steel ấn được đề xuất trông giống như tùy chọn đúng.
Tuy nhiên, một tập lệnh chứa:
#! /bin/sh
sleep 1
xdotool type date
xdotool key Return
trong Exec
lĩnh vực làm việc tốt. Thật vậy, tôi luôn khuyên bạn nên sử dụng tập lệnh cho các lệnh phức tạp trong tệp trên máy tính để bàn.
Bạn có thể có một tập lệnh với /usr/bin/xdotool
shebang, nhưng trang này cho biết " script
chế độ không hoàn toàn được bổ sung và có thể nằm dưới mức mong đợi của bạn", vì vậy tôi bị mắc kẹt với các tập lệnh bash.
Tôi có thể đã nhìn thấy mọi thứ, nhưng trong vài lần thử đầu tiên, tôi đã phải đặt một (nhỏ) . Đó là một tạo tác của việc thử nó trên thiết bị đầu cuối đang thực thi các lệnh thay vì một cửa sổ khác.sleep
giữa các lệnh type
và key
lệnh
xdotool type 'word
sau phím 'Enter' và sau đó đóng cửa '
, cũng như $'word\n'
(trong đó bash mở rộng \n
đến một dòng mới theo nghĩa đen trước khi đi qua các lập luận để xdotool
).
'
hoặc hai \n
giây với $
thủ thuật).
sleep
(xem ghi chú trong văn bản nhỏ). Tôi đã không thay đổi các cửa sổ và chỉ thử nó trên cùng một cửa sổ, nhưng với một sleep 1
, cả hai phương pháp đều hoạt động với cả hai cửa sổ và sau khi chuyển đổi. Tôi đoán phím nhấn Enter của riêng tôi bằng cách nào đó đã can thiệp vào dòng mới xdotool. Tuy nhiên, đối với yêu cầu phức tạp hơn của tệp máy tính để bàn, tôi vẫn đề xuất tập lệnh.
Dường như với tôi ứng dụng không phân tích cú pháp nhiều lệnh, nhưng lại coi nó là một lệnh đơn. Vì vậy, làm cho nó trở thành một lệnh duy nhất bằng cách gói nó một lệnh gọi shell ...
bash -c 'xdotool type date; xdotool key Return'
Bây giờ bạn cũng có thể làm những thứ vỏ khác ...
bash -c 'xdotool type "`date +"%Y-%m-%d_%T`"'
Lưu ý rằng lệnh "ngày" được sử dụng cuối cùng bao gồm một dòng mới! và "xdotool" sẽ xuất nó.
LƯU Ý: nếu bạn đang làm điều này dưới dạng macro bàn phím, tôi cũng sẽ thêm một vài tùy chọn nữa vào "xdotool" để làm cho công việc này tốt hơn ...
bash -c 'xdotool type --clearmodifiers -delay 0 "`date +"%Y-%m-%d_%T`"'
xdotool type $'word\r'
, trong đó$''
thoát khỏi\r
cái gì đó như trả lại (\n
không hoạt động ở đây).