ฉันจะรันโปรแกรม X ครั้งในเทอร์มินัลได้อย่างไร
ฉันอ่านว่าฉันต้องทำ bin / bash txt แต่ฉันไม่รู้วิธีการใช้งาน X ครั้งนี้
ฉันจะรันโปรแกรม X ครั้งในเทอร์มินัลได้อย่างไร
ฉันอ่านว่าฉันต้องทำ bin / bash txt แต่ฉันไม่รู้วิธีการใช้งาน X ครั้งนี้
คำตอบ:
คุณสามารถใช้และxargs
seq
โดยทั่วไป:
seq nr_of_times_to_repeat | xargs -Iz command
ตัวอย่างเช่น:
seq 10 | xargs -Iz xdotool click 1
จะรันxdotool click 1
คำสั่ง 10 ครั้ง
เปิด Terminal และใช้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
$
โอ้ฉันรู้โปรดลบครั้งแรก sylvain@sylvain-ThinkPad-T430s:~$
มันเป็นเพียงมีเพื่อระบุเปลือกเช่นพรอมต์ เรามักจะเพิ่มลงในคำตอบของบรรทัดคำสั่งเพื่อแยกความแตกต่างคำสั่งจากผลลัพธ์ของมัน
#!/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
หากคุณมี GNU Parallel คุณสามารถเรียกใช้:
seq 10 | parallel -N0 doit
คอมพิวเตอร์เครื่องใหม่ทุกเครื่องมีหลายคอร์ แต่โปรแกรมส่วนใหญ่เป็นแบบอนุกรมและจะไม่ใช้หลายคอร์ อย่างไรก็ตามงานหลายอย่างขนานกันมาก:
GNU Parallel เป็นตัวปรับเทียบทั่วไปและทำให้การเรียกใช้งานแบบขนานบนเครื่องเดียวกันหรือบนเครื่องหลายเครื่องที่คุณเข้าถึงได้ง่าย
หากคุณมี 32 งานที่แตกต่างกันที่คุณต้องการเรียกใช้บน 4 CPU ทางตรงไปข้างหน้าเพื่อขนานคือการรัน 8 งานในแต่ละ CPU:
GNU Parallel แทนการวางกระบวนการใหม่เมื่อเสร็จสิ้น - ทำให้ซีพียูทำงานและประหยัดเวลา:
การติดตั้ง
การติดตั้งส่วนบุคคลไม่ต้องการการเข้าถึงรูท สามารถทำได้ภายใน 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
parallel -N0 doit ::: {1..10}
{1..10}
ไม่ทำงานใน (t) csh / fish / ash และ{1..10}
โครงสร้างถูก จำกัด ด้วยความยาวของบรรทัดคำสั่งดังนั้นสิ่งนี้จะไม่ทำงาน: {1..1000000000}
ในขณะที่seq 1000000000
จะใช้งานได้ดี แต่สำหรับสถานการณ์ส่วนใหญ่{1..10}
จะทำงานได้ตามที่คาดไว้และฉันก็มักจะใช้มันเช่นกัน
คุณสามารถใช้for
ลูปสไตล์ C ซึ่งมีความได้เปรียบมากกว่าเวอร์ชัน brace-expansion ( {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
เพียงคุณใช้คำสั่ง watch:
watch -n x <your command>
เปลี่ยน x เป็นเวลาเป็นวินาที
ตัวอย่าง:
watch -n 1 xdotool click 1
ดังนั้น xdotool click 1 จะถูกทำซ้ำทุกๆ 1 วินาทียุติเมื่อคุณทำเสร็จแล้ว