如何在终端中执行X次程序?
我读到我必须执行bin / bash txt,但是我不知道如何执行X次。
如何在终端中执行X次程序?
我读到我必须执行bin / bash txt,但是我不知道如何执行X次。
Answers:
seq nr_of_times_to_repeat | xargs -Iz command
例如:
seq 10 | xargs -Iz xdotool click 1
将执行xdotool click 1
命令10次。
打开一个终端并使用以下bash
命令:
for i in {1..5}; do xdotool click 1; done
有点冗长和延迟1秒:
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
$
。它只是用来指示shell提示,如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是一个通用的并行器,可以轻松地在具有ssh访问权限的同一台计算机或多台计算机上并行运行作业。
如果要在4个CPU上运行32个不同的作业,则并行化的直接方法是在每个CPU上运行8个作业:
GNU Parallel会在完成时生成一个新进程-使CPU保持活动状态,从而节省时间:
安装
个人安装不需要root访问。这样做可以在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 /鱼/灰不工作,并且{1..10}
构建体通过命令行的长度的限制,所以这不会工作:{1..1000000000}
而seq 1000000000
将工作得很好。但是对于大多数情况,它{1..10}
会按预期工作,我也经常使用它。
您可以使用C样式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
只需使用watch命令即可:
watch -n x <your command>
将x更改为以秒为单位的时间。
范例:
watch -n 1 xdotool click 1
因此,xdotool单击1将每1秒重复一次,完成后将其终止。