GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo ejecutar un comando varias veces, usando bash shell?

Solución 1:

No creo que exista un comando o un shell incorporado para esto, ya que es un subconjunto trivial de lo que el Bourne shell for loop está diseñado y, por lo tanto, implementar un comando como este es bastante simple.

Según la sugerencia de JimB, use el Bash integrado para generar secuencias:

for i in {1..10}; do command; done

Para versiones muy antiguas de bash, puede usar seq comando:

for i in `seq 10`; do command; done

Esto itera diez veces ejecutando command cada vez:puede ser una canalización o una serie de comandos separados por ; o && . Puedes usar el $i variable para saber en qué iteración estás.

Si considera que este guión es una secuencia de comandos y, por lo tanto, por alguna razón no especificada (pero quizás válida) no es deseable, puede implementarlo como un comando, tal vez algo como esto en su .bashrc (no probado):

#function run
run() {
    number=$1
    shift
    for i in `seq $number`; do
      [email protected]
    done
}

Uso:

run 10 command

Ejemplo:

run 5 echo 'Hello World!'

Solución 2:

ps aux | grep someprocess parece que desea ver los cambios de un programa durante un tiempo fijo. Eduardo dio una respuesta que responde exactamente a tu pregunta pero hay una alternativa:watch :

watch 'ps aux | grep someprocess'

Tenga en cuenta que puse el comando entre comillas simples para evitar que el shell interprete el comando como "ejecutar reloj ps aux" y canalizar el resultado a través de grep someprocess . Otra forma de hacer el comando anterior sería:

watch ps aux \| grep someprocess

De forma predeterminada, watch se actualiza cada dos segundos, eso se puede cambiar usando el -n opción. Por ejemplo, si desea tener un intervalo de 1 segundo:

watch -n 1 'ps aux | grep someprocess'

Solución 3:

Solo por diversión

pgrep ssh ;!!;!!;!!;!!;!!;!!

Solución 4:

Prueba esto:

yes ls | head -n5 | bash

Esto requiere que el comando se ejecute en una subcapa, una pequeña penalización de rendimiento. YMMV. Básicamente, obtienes el comando "sí" para repetir la cadena "ls" N veces; mientras que "head -n5" terminó el ciclo en 5 repeticiones. La canalización final envía el comando al shell de su elección.

Por cierto csh Las conchas similares tienen un repeat incorporado dominio. ¡Podrías usar eso para ejecutar tu comando en un sub-shell de bash!

Solución 5:

similar a las respuestas anteriores, pero no requiere el ciclo for:

seq 10 | xargs -I -- echo "hello"

tubería de salida de seq a xargs sin argumentos ni opciones


Linux
  1. Cómo ejecutar o repetir un comando de Linux cada X segundos para siempre

  2. Cómo ejecutar un solo comando en múltiples sistemas remotos a la vez

  3. Cómo configurar Bash Shell restringido en Linux

  4. ¿Usando el reloj para ejecutar una función repetidamente en Bash?

  5. ¿Cómo puedo encontrar mi versión de shell usando un comando de Linux?

Cómo ejecutar múltiples comandos de Linux en un solo comando

Cómo ejecutar un script Bash

Cómo ejecutar varios comandos de Linux a la vez en la terminal de Linux

Usando el comando Watch en Linux

Uso de la función de historial en Bash Shell en el servidor Ubuntu 16.04 LTS

¿Cómo edito líneas anteriores en un comando de varias líneas en Bash?