Comment exécuter un programme X fois dans le terminal?
J'ai lu que je dois faire un txt bin / bash, mais je ne sais pas comment exécuter ce X fois.
Comment exécuter un programme X fois dans le terminal?
J'ai lu que je dois faire un txt bin / bash, mais je ne sais pas comment exécuter ce X fois.
Réponses:
Vous pouvez utiliser xargset seq. Généralement:
seq nr_of_times_to_repeat | xargs -Iz command
Par exemple:
seq 10 | xargs -Iz xdotool click 1
exécutera la xdotool click 1commande 10 fois.
Ouvrez un terminal et utilisez la bashcommande suivante :
for i in {1..5}; do xdotool click 1; done
Avec un peu de verbosité et 1s de retard:
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
$. Il est juste là pour indiquer une invite shell comme sylvain@sylvain-ThinkPad-T430s:~$. Nous l'ajoutons généralement aux réponses en ligne de commande pour différencier la commande de ses résultats.
#!/bin/bash
x=1
while [ $x -le 10 ]
do
<command to run>
x=$(( $x + 1 ))
done
où 10 est le nombre d'exécutions de la commande
si vous avez besoin de faire une petite pause:
#!/bin/bash
x=1
while [ $x -le 10 ]
do
<command to run>
sleep 1
x=$(( $x + 1 ))
done
Copiez le script dans un fichier vide, remplacez-le <command to run>par votre xdotoolcommande, enregistrez-le sous run_xdotool.sh, exécutez-le par la commande:
sh /path/to/run_xdotool.sh
Alternativement, vous pouvez le rendre exécutable et l'exécuter simplement par
/path/to/run_xdotool.sh
Puisque vous mentionnez de l'utiliser pour faire des clics, le plus simple pourrait être d'utiliser xdotoolla propre option de répétition intégrée de. Le format est:
xdotool click --delay <delay> --repeat <repeats> <button>
(delay in milliseconds between the clicks)
Pour effectuer 10 clics de souris (bouton 1) d'affilée, une seconde entre les deux, la commande est:
xdotool click --delay 1000 --repeat 10 1
Si vous avez GNU Parallel, vous pouvez exécuter:
seq 10 | parallel -N0 doit
Tous les nouveaux ordinateurs ont plusieurs cœurs, mais la plupart des programmes sont de nature série et n'utiliseront donc pas les cœurs multiples. Cependant, de nombreuses tâches sont extrêmement parallélisables:
GNU Parallel est un paralléliseur général et permet d'exécuter facilement des travaux en parallèle sur la même machine ou sur plusieurs machines auxquelles vous avez accès ssh.
Si vous souhaitez exécuter 32 tâches différentes sur 4 processeurs, une manière simple de paralléliser consiste à exécuter 8 tâches sur chaque processeur:

GNU Parallel génère à la place un nouveau processus à la fin - en maintenant les CPU actifs et en économisant ainsi du temps:

Installation
Une installation personnelle ne nécessite pas d'accès root. Cela peut être fait en 10 secondes en procédant comme suit:
(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash
Pour d'autres options d'installation, voir http://git.savannah.gnu.org/cgit/parallel.git/tree/README
Apprendre encore plus
Voir plus d'exemples: http://www.gnu.org/software/parallel/man.html
Regardez les vidéos d'introduction: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
Parcourez le didacticiel: http://www.gnu.org/software/parallel/parallel_tutorial.html
Inscrivez-vous à la liste de diffusion pour obtenir de l'aide: https://lists.gnu.org/mailman/listinfo/parallel
parallel -N0 doit ::: {1..10}
{1..10}ne fonctionne pas dans (t) csh / fish / ash, et la {1..10}construction est limitée par la longueur de la ligne de commande, donc cela ne fonctionnera pas: {1..1000000000}alors que seq 1000000000cela fonctionnera très bien. Mais pour la plupart des situations, {1..10}cela fonctionnera comme prévu, et j'utilise souvent cela aussi.
Vous pouvez utiliser une forboucle de style C qui a l'avantage par rapport à la version avec accolade ( {1..5}) de pouvoir utiliser des variables pour spécifier les points finaux. L'une ou l'autre version est meilleure que l'utilisation d'un utilitaire externe ( seq).
t=5
for ((x = 1; x <= t; x++))
do
xdotool click 1
done
Tout sur une seule ligne:
t=5; for ((x = 1; x <= t; x++)); do xdotool click 1; done
Ou vous pouvez le faire sans boucle (pour cet utilitaire et cette fonction spécifiques):
xdotool click --repeat 5 --delay 50 1
Vous pouvez simplement utiliser la commande watch:
watch -n x <your command>
changer x en temps en secondes.
Exemple :
watch -n 1 xdotool click 1
Donc, xdotool click 1 sera répété toutes les 1 s, terminez-le lorsque vous avez terminé.