seq (Unix) - seq (Unix)

seq
Développeur(s) Laboratoires AT&T Bell
Première version février 1985 ; il y a 36 ans ( 1985-02 )
Système opérateur Unix , Unix-like , Plan 9
Plate-forme Multiplateforme
Taper Commander
Licence coreutils : GPLv3+

Sur les systèmes informatiques de type Unix, seq est un utilitaire permettant de générer une séquence de nombres.

Histoire

seq est apparu pour la première fois sur la 8e édition de Research Unix en 1985 et n'a pas été adopté par d'autres variantes d' Unix (telles que les Unix commerciaux ou BSD ). Néanmoins, il a ensuite été adopté dans Plan 9 de Bell Labs , et à partir de là a été copié dans certains descendants BSD modernes comme FreeBSD . Une autre version de seq a été écrite en 1994 par Ulrich Drepper , pour GNU , et est maintenant disponible sur toutes les distributions Linux dans le cadre des GNU Core Utilities .

Fonctionnalité

Dans son cas d'utilisation le plus basique, seq N imprime tous les entiers de 1 à N en séquence. C'était pratique car le shell Unix à l'époque, le shell Bourne n'avait pas de primitives pour itérer sur les nombres, et sa commande "for" ne pouvait itérer que sur une liste de mots. seq a donc été utilisé pour générer une telle liste, comme dans cet exemple :

# Remove file1 through file17:
for n in `seq 17`
do
    rm file$n
done

seq avait des options supplémentaires pour contrôler le début (pas seulement la fin) de la séquence numérique, son incrément (un nombre à virgule flottante ) et le formatage du nombre. GNU seq a changé le nom et la signification de l'option de format (de -p à -f) et a ajouté une option pour contrôler le séparateur entre les nombres (-s, par défaut une nouvelle ligne).

Avec d'autres alternatives disponibles (par exemple, expr ), et avec des shells plus récents ajoutant une itération numérique intégrée, seq est moins couramment utilisé aujourd'hui. Dans le shell Linux moderne, bash , l'exemple ci-dessus peut être écrit comme suit :

for n in {1..17}
do
    rm file$n
done

et plus efficacement, sans réellement générer toute la séquence à l'avance, car

for ((n=1; n<=17; n++))
do
    rm file$n
done

Les références

  1. page de manuel seq de la 8e édition Unix
  2. page de manuel seq de FreeBSD

Liens externes