¿Cómo ejecuto un programa X veces en el terminal?
Leí que tengo que hacer un bin / bash txt, pero no sé cómo ejecutar esto X veces.
¿Cómo ejecuto un programa X veces en el terminal?
Leí que tengo que hacer un bin / bash txt, pero no sé cómo ejecutar esto X veces.
Respuestas:
Puedes usar xargsy seq. En general:
seq nr_of_times_to_repeat | xargs -Iz command
Por ejemplo:
seq 10 | xargs -Iz xdotool click 1
ejecutará el xdotool click 1comando por 10 veces.
Abra una Terminal y use el siguiente bashcomando:
for i in {1..5}; do xdotool click 1; done
Con un poco de verbosidad y 1s de retraso:
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
$. Solo está ahí para indicar un indicador de shell como sylvain@sylvain-ThinkPad-T430s:~$. Por lo general, lo agregamos a las respuestas de la línea de comandos para diferenciar el comando de sus resultados.
#!/bin/bash
x=1
while [ $x -le 10 ]
do
<command to run>
x=$(( $x + 1 ))
done
donde 10 es el número de veces que se ejecuta el comando
Si necesita construir en un pequeño descanso:
#!/bin/bash
x=1
while [ $x -le 10 ]
do
<command to run>
sleep 1
x=$(( $x + 1 ))
done
Copie el script en un archivo vacío, reemplácelo <command to run>por su xdotoolcomando, guárdelo como run_xdotool.sh, ejecútelo por el comando:
sh /path/to/run_xdotool.sh
Alternativamente, puede hacerlo ejecutable y simplemente ejecutarlo
/path/to/run_xdotool.sh
Como menciona usarlo para hacer clics, lo más fácil podría ser usar xdotoolla opción de repetición incorporada. El formato es:
xdotool click --delay <delay> --repeat <repeats> <button>
(delay in milliseconds between the clicks)
Para hacer 10 clics del mouse (botón 1) seguidos, un segundo en el medio, el comando es:
xdotool click --delay 1000 --repeat 10 1
Si tiene GNU Parallel puede ejecutar:
seq 10 | parallel -N0 doit
Todas las computadoras nuevas tienen múltiples núcleos, pero la mayoría de los programas son de naturaleza serial y por lo tanto no usarán los múltiples núcleos. Sin embargo, muchas tareas son extremadamente paralelizables:
GNU Parallel es un paralelizador general y hace que sea fácil ejecutar trabajos en paralelo en la misma máquina o en múltiples máquinas a las que tiene acceso ssh.
Si tiene 32 trabajos diferentes que desea ejecutar en 4 CPU, una forma directa de paralelizar es ejecutar 8 trabajos en cada CPU:

GNU Parallel genera un nuevo proceso cuando uno termina, manteniendo las CPU activas y ahorrando así tiempo:

Instalación
Una instalación personal no requiere acceso de root. Se puede hacer en 10 segundos haciendo esto:
(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash
Para otras opciones de instalación, consulte http://git.savannah.gnu.org/cgit/parallel.git/tree/README
Aprende más
Ver más ejemplos: http://www.gnu.org/software/parallel/man.html
Mira los videos de introducción: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
Recorre el tutorial: http://www.gnu.org/software/parallel/parallel_tutorial.html
Regístrese en la lista de correo electrónico para obtener asistencia: https://lists.gnu.org/mailman/listinfo/parallel
parallel -N0 doit ::: {1..10}
{1..10}no funciona en (t) csh / fish / ash, y la {1..10}construcción está limitada por la longitud de la línea de comando, por lo que esto no funcionará: {1..1000000000}mientras seq 1000000000que funcionará bien. Pero para la mayoría de las situaciones {1..10}funcionará como se espera, y a menudo también lo uso.
Puede usar un forbucle de estilo C que tiene la ventaja sobre la versión de expansión de llaves ( {1..5}) de poder usar variables para especificar los puntos finales. Cualquiera de las versiones es mejor que usar una utilidad externa ( seq).
t=5
for ((x = 1; x <= t; x++))
do
xdotool click 1
done
Todo en una línea:
t=5; for ((x = 1; x <= t; x++)); do xdotool click 1; done
O podría hacerlo sin un bucle (para esta utilidad y función específica):
xdotool click --repeat 5 --delay 50 1
Simplemente puedes usar el comando watch:
watch -n x <your command>
cambie x al tiempo en segundos.
Ejemplo:
watch -n 1 xdotool click 1
Entonces xdotool click 1 se repetirá cada 1 s, finalícelo cuando haya terminado.