En los sistemas informáticos tipo Unix , seq es una utilidad para generar una secuencia de números.
Historia
El comando `seq` apareció por primera vez en la octava edición de Research Unix en 1985 y no fue adoptado por otras variantes de Unix (como los Unix comerciales o BSD ). Sin embargo, posteriormente fue adoptado en Plan 9 de Bell Labs y, desde allí, se copió a algunos descendientes modernos de BSD como FreeBSD . Ulrich Drepper escribió otra versión de `seq` en 1994 para GNU , y ahora está disponible en todas las distribuciones de Linux como parte de las utilidades principales de GNU . El comando está disponible como un paquete independiente para Microsoft Windows como parte de la colección UnxUtils de puertos nativos Win32 de utilidades comunes similares a GNU Unix. [ 1 ]
Funcionalidad
En su caso de uso más básico, `seq N` imprime todos los números enteros del 1 al N en secuencia. Esto resultaba conveniente ya que el intérprete de comandos de Unix de la época, el intérprete de comandos Bourne , no disponía de primitivas para iterar sobre números, y su comando `for` solo podía iterar sobre una lista de palabras. Por lo tanto, se utilizaba `seq` para generar dicha lista, como en este ejemplo:
# Eliminar los archivos del 1 al 17: para cada n en ` seq 17 ` hacer rm "archivo $n " hechoLa función seq tenía opciones adicionales para controlar el inicio (no solo el final) de la secuencia numérica, su incremento (un número de coma flotante ) y el formato del número. GNU seq cambió el nombre y el significado de la opción de formato (de -p a -f ) y agregó una opción para controlar el separador entre los números ( -s , por defecto un salto de línea).
Con otras alternativas disponibles (por ejemplo, expr ), y con los shells más recientes que agregan iteración numérica incorporada, seq se usa con menos frecuencia hoy en día. En el shell moderno de Linux, bash , el ejemplo anterior se puede escribir alternativamente como:
para n en { 1 ..17 } hacer rm "archivo $n " hechoy de manera más eficiente, sin generar realmente toda la secuencia por adelantado, como
para (( n = 1 ; n< = 17 ; n++ )) hacer rm "archivo $n " hechoReferencias
- ↑ "Versiones nativas para Win32 de algunas utilidades GNU" . unxutils.sourceforge.net .
Enlaces externos
- – Manual de comandos de usuario de Linux
- – Manual del programador de Plan 9 , Volumen 1
- Software Unix
- Software de utilidad