একে অপরের থেকে পৃথক পৃথক এক লাইনে বেশ কয়েকটি এক্সডটুল কমান্ড চালান


11

আমি xdotool type wordতখন xdotool key Returnস্টার্টআপ অ্যাপ্লিকেশন পছন্দগুলি থেকে চালানোর চেষ্টা করছি trying
তবে যদি আমি ব্যবহার করি &&বা ;, এক্সডটুল এটিকে ইনপুটটির ধারাবাহিকতা হিসাবে মূল্যায়ন করে।


1
আমার ব্যবহারের ক্ষেত্রে এটি কাজ করে xdotool type $'word\r', যেখানে ফিরে যাওয়ার মতো কিছুতে $''পালিয়ে যায় \r( \nএখানে কাজ করে না)।
Scz

উত্তর:


16

দীর্ঘ গল্প সংক্ষিপ্ত:
একটি স্ক্রিপ্ট ব্যবহার করুন।

#! /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কিছু টাইপ করার পরে টিপেন তবে তা করার জন্য চারিদিকের উপায় আছে।

যখন এটি "এএসসিআইআই" নিউলাইনটি বলে, তখন এটি খালি বোঝার অর্থ নয় \n। এবং কমান্ড প্রতিস্থাপন ( xdotool type "$(printf '\n')", বলুন) নতুন লাইনের পিছনে খায়। এই xdotoolsফোরামের পোস্ট অনুসরণ করে , আমি এটি চেষ্টা করেছি:

xdotool type "$(printf 'date\n ')"

এবং এটা কাজ করে. তবে এটি কেবল তখনই কাজ করে যদি এর পরে কিছু চরিত্র থাকে \nএবং এটি স্পষ্টতই একটি পিছনের স্থান ছেড়ে দেয়, যা আপনি চান না। আমি এটিকে সংশোধন করেছি:

xdotool type "$(printf 'date\n\e ')"

এবং এটি কাজ করে এবং কোনও পিছনে স্থান দেয় না। তবে এটি তাদের শেলটিতে ভাই মোড ব্যবহার করে তাদের জন্য সমস্যা তৈরি করতে পারে।

@ স্টিল্ড্রাইভারের মন্তব্যে ধন্যবাদ আমি বুঝতে পেরেছিলাম যে, আমি যে কমান্ডগুলি কমান্ডটি চালিয়েছিলাম তার খুব টার্মিনালটিতে চেষ্টা করার কারণে এটি হয়েছিল। একটিমাত্র নতুন লাইনের সঠিকভাবে নিবন্ধনের জন্য আমার টিপুন Enterএবং xdotoolকমান্ডের মধ্যে একটি সামান্য ব্যবধানই যথেষ্ট ছিল। এভাবে:

sleep 0.1; xdotool type $'date\n'

সুতরাং হয় তা উদ্ধৃত করে রেখাটি প্রসারিত করুন:

xdotool type 'date
'

বা @ স্টেলড্রাইভার প্রস্তাবিত হিসাবে শেল ব্যাখ্যাটি সঠিক বিকল্পের মতো দেখায়।

তবে, একটি স্ক্রিপ্ট রয়েছে:

#! /bin/sh
sleep 1
xdotool type date
xdotool key Return

মধ্যে Execক্ষেত্র জরিমানা করেন। প্রকৃতপক্ষে, আমি সবসময় একটি ডেস্কটপ ফাইলে জটিল কমান্ডের জন্য একটি স্ক্রিপ্ট ব্যবহার করার পরামর্শ দিই।

আপনি /usr/bin/xdotoolশিবাঙের সাথে একটি স্ক্রিপ্ট রাখতে পারেন , তবে ম্যানপেজটি বলে যে " scriptমোডটি পুরোপুরি সজ্জিত হয় না এবং আপনার প্রত্যাশার নীচে পড়ে যেতে পারে", তাই আমি স্ক্রিপ্টগুলিকে বাঁচিয়েছি।

আমি হয়ত জিনিসগুলি দেখছি, তবে আমার প্রথম কয়েক দফায় চেষ্টা sleepকরতে হয়েছে typeএবং keyকমান্ডগুলির মধ্যে একটি (ছোট) রাখতে হয়েছিল । এটি অন্য উইন্ডোর পরিবর্তে কমান্ড সম্পাদনকারী টার্মিনালে এটি চেষ্টা করার একটি নিদর্শন ছিল।


একটি আক্ষরিক নিউলাইন কাজ করে বলে মনে হচ্ছে , xdotool type 'wordতারপরে 'এন্টার' কী এবং তারপরে সমাপ্তি ( 'যেমন বাশটি আর্গুমেন্টটি পাস করার আগে আক্ষরিক নতুন $'word\n'লাইনে প্রসারিত করে )। \nxdotool
স্টিল্ড্রাইভার

@ স্টিলড্রাইভার হিট এবং মিস এটি আমি প্রথমে চেষ্টা করেছি এবং কাজ করে নি।
মুরু

@steeldriver কি কাজ ছিল দুই নতুন লাইন (দুই বন্ধ করার আগে প্রবেশ 'বা দুই \nসঙ্গে গুলি $কৌতুক)।
মুরু

এটি অদ্ভুত, অতিরিক্ত নিউলাইনটি আমার পক্ষে প্রয়োজনীয় বলে মনে হচ্ছে না - আমি ভাবছি এটি লক্ষ্য উইন্ডোর মালিকানাধীন অ্যাপ্লিকেশনটির উপর নির্ভর করে (আমি জিনীতে একটি খালি নথি ব্যবহার করছিলাম)?
স্টিল্ড্রাইভার

টিপসের জন্য @ স্টাইলড্রাইভার ধন্যবাদ জেনে খুশি হলাম যে আমি প্রয়োজনের বিষয়ে ভ্রূক্ষেপ করছিলাম না sleep(ছোট লেখায় নোটটি দেখুন)। আমি উইন্ডোজ পরিবর্তন করছিলাম না এবং কেবল এটি একই উইন্ডোতে চেষ্টা করে দেখছিলাম, তবে একটি দিয়ে sleep 1উভয় পদ্ধতি একই উইন্ডো এবং স্যুইচিংয়ের পরে উভয়ই কাজ করেছিল। আমি অনুমান করি আমার নিজস্ব এন্টার কিপ্রেস একরকম এক্সডটুল নিউলাইনটিতে হস্তক্ষেপ করেছে। তবে ডেস্কটপ ফাইলের আরও জটিল প্রয়োজনের জন্য, আমি এখনও স্ক্রিপ্টটি সুপারিশ করব।
মারু

1

আমার কাছে মনে হয় অ্যাপ্লিকেশনটি একাধিক কমান্ড বিশ্লেষণ করছে না, একে একে একক আদেশ হিসাবে বিবেচনা করে। যেমন এটি একটি শেল কল মোড়ানো দ্বারা একটি একক কমান্ড করুন ...

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`"'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.