এক্স বার চালান


18

টার্মিনালে আমি কীভাবে এক্স বার চালিত করব?

আমি পড়েছি যে আমাকে একটি বিন / ব্যাশ টিএসটি করতে হবে, তবে আমি এই এক্স বারটি কার্যকর করতে জানি না।


এটি কী, একটি স্ক্রিপ্ট, একটি অ্যাপ্লিকেশন, এটি কী করে? ত্রুটির ক্ষেত্রে কী হওয়া উচিত? দৌড়ানোর পরেও কি এটি বন্ধ হয়ে যায়? এটি বন্ধ হয়েছে কিনা তা পরীক্ষা করা উচিত?
জ্যাকব ভ্লিজম

এটির একটি ক্লিক, এক্সডটুল ক্লিক আমি মনে করি না এটি কোনও ত্রুটি তৈরি করতে পারে।
ব্যবহারকারী 3597989

@ ক্যাসিয়া: ঠিক যেমন উত্তরগুলি চিরকালের জন্য লুপ করে চলেছে তা নয়। এখানে ওপি একটি নির্দিষ্ট সংখ্যক লুপের জন্য জিজ্ঞাসা করে।
সিলভাইন পাইনাউ

4
বা ব্লুটার্স: Askubuntu.com/a/508752/158442 - তবে তারা উভয়ই এখানে নেই তবে এখানে। : ডি
মুরু

2
@ ক্যাসিয়া: জিজ্ঞাসার উত্তরটি এখানে থাকা উচিত নয় টার্মিনালে প্রতি x ব্যবধানের সাথে কম্যান্ডের পুনরাবৃত্তি করা
সিলভাইন পাইনাউ

উত্তর:


24

আপনি ব্যবহার করতে পারেন xargsএবং seq। সাধারণত:

seq nr_of_times_to_repeat | xargs -Iz command

উদাহরণ স্বরূপ:

seq 10 | xargs -Iz xdotool click 1

xdotool click 1কমান্ডটি 10 ​​বার কার্যকর করবে ।


1
এটি সম্ভবত সবচেয়ে মার্জিত সমাধান, সহজতম উল্লেখ না করে।
শেঠ

পাইপ চরিত্রটি ব্যাখ্যা করার জন্য এটি সত্যিই ভাল উদাহরণ বলে আমি মনে করি।
পাসক্যালভিকুটেন

10

একটি টার্মিনাল খুলুন এবং নিম্নলিখিত bashকমান্ডটি ব্যবহার করুন :

for i in {1..5}; do xdotool click 1; done

কিছুটা ভার্বোসিটি এবং 1s বিলম্ব সহ:

for i in {1..5}; do echo click \#$i && xdotool click 1 && sleep 1; done
click #1
click #2
click #3
click #4
click #5

'কর' দিয়ে
সিনট্যাক্স

@ user3597989 এটি আমার পক্ষে কাজ করে, আপনি কি আবার পরীক্ষা করতে পারবেন?
সিলভাইন পাইনাউ

@ ব্যবহারকারী 3597989 ওহ আমি জানি, দয়া করে প্রথমটি সরিয়ে দিন $। শেল প্রম্প্টের মতো ইঙ্গিত করার জন্য এটি কেবল সেখানে sylvain@sylvain-ThinkPad-T430s:~$। কমান্ডের ফলাফলগুলি থেকে পৃথক করতে আমরা সাধারণত এটি কমান্ড লাইনের উত্তরগুলিতে যুক্ত করি।
সিলভাইন পাইনাউ

@ ইউজার 3597989: আমি বিভ্রান্তি এড়াতে শেল প্রম্পটটি সরিয়ে দিয়েছি
সিলভাইন পাইনাউ

5

এটি করা উচিত:

#!/bin/bash

x=1
while [ $x -le 10 ]
do
  <command to run>
  x=$(( $x + 1 ))
done

যেখানে 10 হ'ল কমান্ডটি চালানোর সংখ্যা

আপনার যদি কিছুটা বিরতি তৈরি করতে হয়:

#!/bin/bash

x=1
while [ $x -le 10 ]
do
  <command to run>
  sleep 1
  x=$(( $x + 1 ))
done

স্ক্রিপ্টটি একটি ফাঁকা ফাইলে অনুলিপি করুন, <command to run>আপনার xdotoolআদেশ দ্বারা প্রতিস্থাপন করুন, এটি সংরক্ষণ করুন run_xdotool.sh, কমান্ড দ্বারা চালিত করুন:

sh /path/to/run_xdotool.sh

বিকল্পভাবে, আপনি এটিকে সম্পাদনযোগ্য করে তুলতে এবং এটিকে সহজে চালাতে পারেন

/path/to/run_xdotool.sh

আরেকটি সমাধান: এক্সডটুল বিল্ট ইন রিপিট বিকল্প ব্যবহার করে

যেহেতু আপনি এটি ক্লিক করতে ব্যবহার করার কথা উল্লেখ করেছেন, তাই xdotoolতার নিজের বিল্ট-ইন পুনরাবৃত্তি বিকল্পটি ব্যবহার করা সবচেয়ে সহজ । বিন্যাসটি হ'ল:

xdotool click --delay <delay> --repeat <repeats> <button>
(delay in milliseconds between the clicks)

এর মাঝে এক সেকেন্ডের পর এক সারিতে 10 টি মাউস ক্লিক (বোতাম 1) করতে, আদেশটি হ'ল:

xdotool click --delay 1000 --repeat 10 1

5

আপনার যদি জিএনইউ সমান্তরাল থাকে তবে আপনি চালাতে পারেন:

seq 10 | parallel -N0 doit

সমস্ত নতুন কম্পিউটারের একাধিক কোর রয়েছে তবে বেশিরভাগ প্রোগ্রাম প্রকৃতির সিরিয়াল এবং তাই একাধিক কোর ব্যবহার করবে না। তবে, অনেকগুলি কাজ অত্যন্ত সমান্তরাল:

  • একই ফাইলটি অনেকগুলি ফাইলে চালান
  • একটি ফাইলের প্রতিটি লাইনের জন্য একই প্রোগ্রামটি চালান
  • একটি ফাইলের প্রতিটি ব্লকের জন্য একই প্রোগ্রামটি চালান

জিএনইউ সমান্তরাল একটি সাধারণ প্যারালালাইজার এবং এটি একই মেশিনে বা আপনার একাধিক মেশিনে ssh অ্যাক্সেস থাকা সমান্তরালে কাজ চালানো সহজ করে তোলে।

যদি আপনার কাছে 32 টি বিভিন্ন চাকরি থাকে তবে আপনি 4 টি সিপিইউতে চালাতে চান, সমান্তরাল করার একটি সরল অগ্রসর উপায় হ'ল প্রতিটি সিপিইউতে 8 টি কাজ চালানো:

সাধারণ সময়সূচী

সিএনইউ সক্রিয় রাখা এবং এভাবে সময় সাশ্রয় করা - জিএনইউ সমান্তরাল পরিবর্তে একটি নতুন প্রক্রিয়া তৈরি করে

জিএনইউ সমান্তরাল শিডিউলিং

স্থাপন

একটি ব্যক্তিগত ইনস্টলেশন রুট অ্যাক্সেস প্রয়োজন হয় না। এটি করে 10 সেকেন্ডের মধ্যে এটি করা যেতে পারে:

(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash

অন্যান্য ইনস্টলেশন বিকল্পের জন্য দেখুন http://git.savannah.gnu.org/cgit/parallel.git/tree/README

আরও জানুন

আরও উদাহরণ দেখুন: http://www.gnu.org/software/parallel/man.html

পরিচিতি ভিডিওগুলি দেখুন: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

টিউটোরিয়াল ভিতর দিয়ে হেটে: http://www.gnu.org/software/parallel/parallel_tutorial.html

সমর্থন পেতে ইমেল তালিকার জন্য সাইন আপ করুন: https://lists.gnu.org/mailman/listinfo/parallel


1
আমি সমান্তরাল ভালবাসি এবং আমি যেখানেই পারি তার ব্যবহারের পরামর্শ দেওয়ার চেষ্টা করি। আপনার নির্দিষ্ট বিকল্পের জন্য একটি প্রশ্ন: আপনি কেন এই ফর্মটির পরিবর্তে প্রস্তাব দিতে পছন্দ করেছেনparallel -N0 doit ::: {1..10}
ফিলিপ-জিয়ান কে লি-স্টকম্যান

1
{1..10}(টি) csh এর মূল / মাছ / অ্যাশের মধ্যে কাজ করে না, এবং {1..10}কনস্ট্রাক্ট তাই এই কাজ করবে না, কমান্ড লাইন এর দৈর্ঘ্য দ্বারা সীমাবদ্ধ হয়: {1..1000000000}যেহেতু seq 1000000000শুধু জরিমানা কাজ করবে। তবে বেশিরভাগ পরিস্থিতিতে {1..10}প্রত্যাশার মতো কাজ করবে এবং আমি প্রায়শই এটি ব্যবহার করি।
ওলে টেঞ্জ

4

আপনি একটি সি স্টাইল forলুপ ব্যবহার করতে পারেন যা {1..5}শেষ পয়েন্টগুলি নির্দিষ্ট করতে ভেরিয়েবলগুলি ব্যবহার করতে সক্ষম হওয়ার ব্রেস-এক্সপেনশন সংস্করণ ( ) এর চেয়ে বেশি সুবিধা রয়েছে । কোনও সংস্করণই বাহ্যিক ইউটিলিটি ( seq) ব্যবহার করার চেয়ে ভাল ।

t=5
for ((x = 1; x <= t; x++))
do
    xdotool click 1
done

সমস্ত এক লাইনে:

t=5; for ((x = 1; x <= t; x++)); do xdotool click 1; done

অথবা আপনি এটি কোনও লুপ ছাড়াই করতে সক্ষম হতে পারেন (এই নির্দিষ্ট ইউটিলিটি এবং ফাংশনের জন্য):

xdotool click --repeat 5 --delay 50 1

0

কেবলমাত্র আপনি ওয়াচ কমান্ড ব্যবহার করতে পারেন:

watch -n x <your command>

সেকেন্ডে সময় সময় এক্স পরিবর্তন।

উদাহরণ:

watch -n 1 xdotool click 1 

সুতরাং এক্সডটুল ক্লিক 1 প্রতি 1 টি পুনরাবৃত্তি হবে, আপনার হয়ে গেলে এটি বন্ধ করুন।


4
আমি মনে করি প্রশ্নটি কমান্ডটি নির্ধারিত সংখ্যক সময়ে সঞ্চালনের ক্ষেত্রে সুনির্দিষ্ট, নির্ধারিত বিরতিতে এত বেশি নয়।
জ্যাকব ভ্লিজম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.