Выполните программу X времена

Как я выполняю программу X времена в терминале?

Я считал, что должен сделать мусорное ведро/удар txt, но я не знаю, как выполнить это X раз.

18
задан 13 September 2014 в 18:43

6 ответов

Можно использовать xargs и seq . Обычно:

seq nr_of_times_to_repeat | xargs -Iz command

, Например:

seq 10 | xargs -Iz xdotool click 1

выполнится эти xdotool click 1 команда в течение 10 раз.

24
ответ дан 16 November 2019 в 12:44

Откройте 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
10
ответ дан 16 November 2019 в 12:44

Это должно сделать:

#!/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's, созданного в повторной опции

Так как Вы упоминаете для использования его, чтобы сделать щелчки, самое легкое могло бы быть должно использовать xdotoolвладейте встроенной повторной опцией. Формат:

xdotool click --delay <delay> --repeat <repeats> <button>
(delay in milliseconds between the clicks)

Чтобы сделать 10 щелчков мышью (кнопка 1) в строке, одна промежуточная секунда, команда:

xdotool click --delay 1000 --repeat 10 1
5
ответ дан 16 November 2019 в 12:44

Если у Вас есть Параллель GNU, можно работать:

seq 10 | parallel -N0 doit

Все новые компьютеры имеют несколько ядер, но большинство программ последовательно по своей природе и не будет поэтому использовать несколько ядер. Однако много задач чрезвычайно parallelizeable:

  • Запущенный та же программа на многих файлах
  • Запущенный та же программа для каждой строки в файле
  • Запускает ту же программу для каждого блока в Параллели GNU файла

, общий parallelizer и делает, легко выполнить задания параллельно на той же машине или на нескольких машинах, к которым у Вас есть ssh доступ.

, Если у Вас есть 32 различных задания, Вы хотите работать на 4 центральных процессорах, прямой способ параллелизировать состоит в том, чтобы выполнить 8 заданий на каждом ЦП:

Simple scheduling

Параллель GNU вместо этого порождает новый процесс, когда каждый заканчивает - хранение активных центральных процессоров и таким образом экономящее время:

GNU Parallel scheduling

Установка

А персональная установка не требует корневого доступа. Это может быть сделано через 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

5
ответ дан 16 November 2019 в 12:44

Можно использовать стиль 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
4
ответ дан 16 November 2019 в 12:44

Просто можно использовать команду часов:

watch -n x <your command>

изменение x ко времени в секундах.

Пример:

watch -n 1 xdotool click 1 

, Таким образом, xdotool нажимают 1, будет повторен каждая 1 с, завершит его когда Ваш сделанный.

0
ответ дан 16 November 2019 в 12:44

Другие вопросы по тегам:

Похожие вопросы: