जवाबों:
लंबी कहानी छोटी:
एक स्क्रिप्ट का उपयोग करें।
#! /bin/sh
# With some window selection magic, or a sleep
# if you want to do that manually.
xdotool type word
xdotool key Return
और लिपि का मार्ग Exec
क्षेत्र में रखा।
लम्बी कहानी:
xdotool
मैनपेज के अनुसार :
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'.
शेल के माध्यम से कमांडिंग ;
या &
संभव नहीं है, क्योंकि शेल सिंटैक्स है और स्टार्टअप एप्लिकेशन शेल सिंटैक्स का समर्थन नहीं करता है। हालाँकि, अगर आप कुछ करना चाहते हैं तो Enterकुछ टाइप करने के बाद प्रेस करें, ऐसा करने के लिए एक राउंडअबाउट तरीका है।
जब यह "ASCII" की नई पंक्ति कहता है, तो इसका मतलब नंगे नहीं है \n
। और कमांड प्रतिस्थापन ( xdotool type "$(printf '\n')"
, कहते हैं) अनुगामी newlines खाती है। इस xdotools
मंच पोस्ट के बाद , मैंने यह कोशिश की:
xdotool type "$(printf 'date\n ')"
और इसने काम किया। लेकिन यह केवल तभी काम करता है जब उसके बाद कुछ चरित्र हो \n
, और यह स्पष्ट रूप से एक अनुगामी स्थान छोड़ता है, जो आप चाहते हैं वह नहीं होगा। मैंने उसे संशोधित किया:
xdotool type "$(printf 'date\n\e ')"
और यह काम करता है और कोई स्थान नहीं छोड़ता है। हालांकि, यह उनके शेल में वीआई मोड का उपयोग करने वालों के लिए समस्या पैदा कर सकता है।
के लिए धन्यवाद @ steeldriver की टिप्पणी मैं पता लगा कि यह मेरे की वजह से बहुत टर्मिनल मैं पर आदेशों को क्रियान्वित किया गया था पर इसे बाहर की कोशिश कर रहा था। मेरे दबाव Enterऔर xdotool
कमांड के बीच बस एक छोटा सा अंतर एक ही नई लाइन के लिए सही ढंग से पंजीकृत होने के लिए पर्याप्त था। इस प्रकार:
sleep 0.1; xdotool type $'date\n'
इसलिए या तो इसे उद्धृत करके लाइन का विस्तार करें:
xdotool type 'date
'
या शैल व्याख्या का उपयोग @steeldriver के रूप में करने का सुझाव दिया सही विकल्प की तरह लग रहा है।
हालाँकि, एक स्क्रिप्ट जिसमें:
#! /bin/sh
sleep 1
xdotool type date
xdotool key Return
में Exec
क्षेत्र ठीक काम किया। वास्तव में, मैं हमेशा एक डेस्कटॉप फ़ाइल में जटिल कमांड के लिए स्क्रिप्ट का उपयोग करने की सलाह देता हूं।
आपके पास /usr/bin/xdotool
शेबंग के साथ एक स्क्रिप्ट हो सकती है , लेकिन मैनपेज कहता है " script
मोड पूरी तरह से फ़ेलशेड नहीं है और आपकी अपेक्षाओं से कम हो सकता है", इसलिए मैं स्क्रिप्ट को काटने के लिए अटक गया।
मैं चीजों को देख रहा हूं, लेकिन मेरे पहले दो प्रयासों में, मुझे और आदेशों के । यह टर्मिनल पर इसे आज़माने की एक कला थी जो दूसरी विंडो के बजाय कमांड को निष्पादित कर रही थी।sleep
बीच एक (छोटा) करना पड़ाtype
key
xdotool type 'word
जिसके बाद 'एन्टर' कुंजी होती है और फिर क्लोजिंग होती है '
, जैसा कि $'word\n'
(जिसमें बैश \n
तर्क पास करने से पहले शाब्दिक न्यूलाइन में फैलता है xdotool
)।
'
या चाल के \n
साथ दो $
)।
sleep
(छोटे पाठ में नोट देखें) की आवश्यकता के बारे में मतिभ्रम नहीं कर रहा था । मैं विंडोज़ नहीं बदल रहा था और बस एक ही खिड़की पर इसे आज़मा रहा था, लेकिन एक के साथ sleep 1
, दोनों तरीकों ने एक ही खिड़की और स्विचिंग के बाद दोनों के साथ काम किया। मुझे लगता है कि मेरा अपना Enter keypress किसी भी तरह xdotool newline के साथ हस्तक्षेप किया है। हालाँकि, डेस्कटॉप फ़ाइल की अधिक जटिल आवश्यकता के लिए, मैं अभी भी स्क्रिप्ट की सिफारिश करूंगा।
मुझे लगता है कि आवेदन कई आदेशों को पार्स नहीं कर रहा है, लेकिन इसे एक ही आदेश के रूप में माना जाता है। जैसे कि इसे शेल कॉल रैप करके इसे एक ही कमांड बनाएं ...
bash -c 'xdotool type date; xdotool key Return'
अब आप अन्य शेल चीजें भी कर सकते हैं ...
bash -c 'xdotool type "`date +"%Y-%m-%d_%T`"'
ध्यान दें कि उस अंतिम में प्रयुक्त "तिथि" कमांड में एक नई पंक्ति शामिल है! और "xdotool" इसे आउटपुट करेगा।
नोट: यदि आप इसे कीबोर्ड मैक्रो के रूप में कर रहे हैं, तो मैं इस काम को बेहतर बनाने के लिए "xdotool" में कुछ और विकल्प भी जोड़ूंगा ...
bash -c 'xdotool type --clearmodifiers -delay 0 "`date +"%Y-%m-%d_%T`"'
xdotool type $'word\r'
, जहाँ रिटर्न जैसी चीज़ से$''
बच जाता है\r
(\n
यहाँ काम नहीं करता है)।