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