বাশে সিমুলেটেড কীস্ট্রোক প্রেরণ


19

আমি সম্প্রতি একটি স্ক্রিপ্ট লেখার চেষ্টা করছি যা ব্যাশটিতে আমার সি ++ প্রোগ্রামটি স্বয়ংক্রিয় করতে ব্যবহৃত হতে পারে । আপনি যদি অটোআইটি জানেন তবে আমি কী করতে চেষ্টা করছি তার একটি উদাহরণ আমি আপনাকে কেবল প্রদর্শন করতে পারি:

send("1{enter}")

অথবা

send("!a")

ঠিক আছে যারা অটোআইটি না বলে:

প্রথম উদাহরণটি একটি সিমুলেটেড "1" কীস্ট্রোক প্রেরণ করে একটি এন্টার (সিআর) প্রেরণ করে

দ্বিতীয় উদাহরণটি Alt-a প্রেরণ করে

আমি বিশেষভাবে এই কাজটি করার চেষ্টা করছি ব্যাশঅন্য কোনও স্ক্রিপ্টিং ভাষা করবে না

এছাড়াও, আমি একটি চামচ চা পছন্দ করি নাএটি লিখতে দয়া করে নির্দিষ্ট করুন । আমার জন্য স্ক্রিপ্ট লেখার অনুমতি নেই।


1
আপনি কি কমান্ড-লাইন, এনক্রস বা গ্রাফিকাল প্রোগ্রামটি স্বয়ংক্রিয় করছেন?
ব্যবহারকারী1686

1
আমি আপাতত একটি কমান্ড লাইন স্বয়ংক্রিয় করছি। এটি স্বয়ংক্রিয়ভাবে সিনের (কনসোল ইনপুট) ইনপুট ফিড করার কথা
ইসহান

উত্তর:


16

প্রোগ্রামের স্টিডিনে পাঠ্য ফিড করতে পাইপ এবং / অথবা পুনঃনির্দেশগুলি ব্যবহার করুন :

echo 1 | myprogram

(echo "First line"
 echo "Second line") | myprogram

myprogram <<EOF
First line
Second line
EOF

ইন্টারেক্টিভ CLI প্রোগ্রাম (ক্ষেত্রে না পুরো টার্মিনাল বেশী), এটা নামে পাইপ বা ব্যবহার করা সম্ভব coprocesses দরিদ্র-মানুষের কেমন হিসাবে expect(যা আপনি Tcl হচ্ছে কারণে ছিটকে):

mkfifo in out
myprogram <in >out &
echo "First line" >in
read -r reply <out

mkfifo in out
myprogram <in >out &
exec {infd}>in {outfd}<out
echo "First line" >&$infd
read -r reply <&$outfd

coproc foo { myprogram; }
echo "First line" >&${foo[1]}
read -r reply <&${foo[0]}

(আউটপুট পাইপ থেকে পড়ার সময় সাবধানতা অবলম্বন করুন; উদাহরণস্বরূপ head -1 <outকেবল একটি লাইন পড়বে না - এটি একটি পুরো 4 কে ব্লকটি বাফার করবে, একটি লাইন মুদ্রণ করবে, বাকিটি ফেলে দেবে))


উত্তর দুটিই সমান ভাল। তবে, এটিই আমি বেশি খুঁজছি।
hanশান

সিএলআই প্রোগ্রাম / ফুল টার্মিনাল বলতে কী বোঝায়?
ক্রিস স্ট্রাইজিনস্কি

সিএলআই মানে কমান্ড লাইন ইন্টারফেস। একটি সিএলআই প্রোগ্রাম হ'ল একটি সাধারণ প্রোগ্রাম যা কমান্ড লাইনে চলে এবং সাধারণত স্টিডিন এবং স্টডআউট ব্যবহার করে কারণ এটি কিছু কার্য সম্পাদন করে এবং তারপরে সম্পাদন শেষ করে এবং কমান্ড লাইন প্রম্পটে ফিরে আসে। grepএবং curlএর ভাল উদাহরণ। একটি সম্পূর্ণ টার্মিনাল প্রোগ্রাম এমন কিছু যা পুরো উইন্ডোটির মতো নিয়ন্ত্রণ করে vimএবং পছন্দ করে screen
ট্রেভিন অ্যাভেরি

16

আপনি যা খুঁজছেন xdotool

এক্সডটুলের সমতুল্য আপনার উদাহরণের আদেশগুলি হ'ল:

xdotool key 1 Return
xdotool keydown Alt key a keyup Alt

এটা ভাল. তবে আমি কিছু খাঁটি বাশ কোড সম্পর্কে ভাবছিলাম
শান

9
@ ইশান: খাঁটি বাশ কোড সহ এগুলি করা কার্যত অসম্ভব । বাশ সরাসরি এক্স 11 ব্যবহার করতে পারে না এবং এটি কোনও বিদ্যমান এক্স 11 লাইব্রেরি ব্যবহার করতে পারে না। আপনাকে সরাসরি এক্স 11 সকেটের সাথে সংযুক্ত করতে হবে (ব্যাশ কেবল টিসিপি করবে না, ইউনিক্স সকেট নয়), এক্স 11 প্রোটোকলটি হাত দিয়ে পার্স করুন (ব্যাশে বাইনারি ডেটা পার্স করা ব্যর্থ হবে) এবং যথাযথ প্রতিক্রিয়াগুলি ক্র্যাফ্ট করুন। বাশ হ'ল একটি শেল, এটি বাহ্যিক সরঞ্জামগুলিতে শিকল দিয়ে কাজ করার জন্য ডিজাইন করা হয়েছে
ব্যবহারকারী1686
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.