Yanıtlar:
Uzun lafın kısası:
Bir senaryo kullanın.
#! /bin/sh
# With some window selection magic, or a sleep
# if you want to do that manually.
xdotool type word
xdotool key Return
Ve betiğin yolunu Exec
alana koy .
Uzun Hikaye:
xdotool
Manpage'e göre :
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'.
Komut zincirleme yoluyla ;
veya &
mümkün değil, çünkü kabuk sözdizimi ve Başlangıç Uygulamaları kabuk sözdizimini desteklemiyor. Bununla birlikte, tek yapmanız gereken bir Enterşey yazdıktan sonra basmaksa, bunu yapmanın dolambaçlı bir yolu vardır.
"ASCII" satırsonu dediğinde, çıplak demek değildir \n
. Ve komut ikamesi ( xdotool type "$(printf '\n')"
diyelim) sondaki satırları yiyor. Bu xdotools
forum gönderisini takiben bunu denedim:
xdotool type "$(printf 'date\n ')"
Ve işe yaradı. Ancak, yalnızca karakterin ardından bir karakter varsa işe yarar \n
ve bu açıkça istediğiniz bir alan bırakmaz. Bunu şu şekilde değiştirdim:
xdotool type "$(printf 'date\n\e ')"
Ve bu çalışıyor ve sondaki boşluk bırakmıyor. Ancak, kabuklarında Vi modunu kullananlar için sorunlara neden olabilir.
Sayesinde @ steeldriver yorumlarına bu çok uç ben komut çalıştırmak edildi üzerinde denemek bana kaynaklandığını anladım. Tek bir yeni satırın doğru şekilde kaydedilmesi için, basmam Enterve xdotool
komut arasındaki küçük bir boşluk yeterliydi. Böylece:
sleep 0.1; xdotool type $'date\n'
Yani ya çizgiyi alıntı yaparak genişletmek:
xdotool type 'date
'
veya kabuk yorumunu @steeldriver'ın önerdiği gibi kullanmak doğru seçeneğe benziyor.
Ancak, aşağıdakileri içeren bir komut dosyası:
#! /bin/sh
sleep 1
xdotool type date
xdotool key Return
içinde Exec
sahada cezası çalıştı. Gerçekten de, her zaman bir masaüstü dosyasındaki karmaşık komutlar için bir komut dosyası kullanmanızı öneririm.
Sen-ebilmek var olmak sen-si olmak bir senaryo ile /usr/bin/xdotool
shebang, ama manpage " script
mod tamamen etli değil ve beklentilerinizin altına düşebilir" diyor, bu yüzden komut dosyaları bash sıkışmış.
Bir şeyler görüyor olabilirdim, ama ilk denememde, ve komutları . Bu, başka bir pencere yerine komutları yürüten terminalde denemenin bir eseriydi.sleep
arasına (küçük) koymak zorunda kaldımtype
key
xdotool type 'word
'Enter' anahtarı ve daha sonra kapatma, ardından '
olarak yapar $'word\n'
(ki burada darbe genişleyen \n
bir hazır yeni satır için bağımsız değişkeni geçirmeden önce xdotool
).
'
iki giriş veya hile). \n
$
sleep
(küçük metindeki nota bakınız). Pencereleri değiştirmedim ve sadece aynı pencerede deniyordum, ancak bir sleep 1
, her iki yöntem de aynı pencerede ve geçiş yaptıktan sonra çalıştı. Sanırım kendi Enter tuşuna basıyorum bir şekilde xdotool satırsonuna müdahale etti. Ancak, bir masaüstü dosyasının daha karmaşık gereksinimi için, komut dosyasını yine de tavsiye ederim.
Bana göre uygulama birden fazla komutu ayrıştırmıyor, tek bir komut gibi davranıyor. Bu nedenle, bir kabuk çağrısını sararak tek bir komut yapın ...
bash -c 'xdotool type date; xdotool key Return'
Şimdi başka kabuk işleri de yapabilirsiniz ...
bash -c 'xdotool type "`date +"%Y-%m-%d_%T`"'
Son kullanılan "tarih" komutunun bir yeni satır içerdiğini unutmayın! ve "xdotool" çıktı verecektir.
NOT: Bunu bir klavye makrosu olarak yapıyorsanız, daha iyi çalışması için "xdotool" a birkaç seçenek daha ekleyeceğim ...
bash -c 'xdotool type --clearmodifiers -delay 0 "`date +"%Y-%m-%d_%T`"'
xdotool type $'word\r'
,$''
kaçış\r
gibi bir yerde (\n
burada çalışmaz) kaçar .