Как я выполняю программу X времена в терминале?
Я считал, что должен сделать мусорное ведро/удар 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
С небольшим количеством многословия и 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
#!/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, можно работать:
seq 10 | parallel -N0 doit
Все новые компьютеры имеют несколько ядер, но большинство программ последовательно по своей природе и не будет поэтому использовать несколько ядер. Однако много задач чрезвычайно parallelizeable:
, общий parallelizer и делает, легко выполнить задания параллельно на той же машине или на нескольких машинах, к которым у Вас есть ssh доступ.
, Если у Вас есть 32 различных задания, Вы хотите работать на 4 центральных процессорах, прямой способ параллелизировать состоит в том, чтобы выполнить 8 заданий на каждом ЦП:
Параллель GNU вместо этого порождает новый процесс, когда каждый заканчивает - хранение активных центральных процессоров и таким образом экономящее время:
Установка
А персональная установка не требует корневого доступа. Это может быть сделано через 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
Можно использовать стиль 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 -n x <your command>
изменение x ко времени в секундах.
Пример:
watch -n 1 xdotool click 1
, Таким образом, xdotool нажимают 1, будет повторен каждая 1 с, завершит его когда Ваш сделанный.