Exploration des puissantes fonctionnalités de la commande seq sous Linux pour automatiser vos tâches de script

Guide complet de la commande seq sous Linux : Automatisez vos tâches avec puissance et précision

La commande seq est bien plus qu’un simple générateur de nombres. C’est un outil fondamental qui vous permet de créer des fichiers de test, contrôler des boucles, effectuer des analyses réseau et réaliser des calculs mathématiques. Dans ce guide détaillé, nous explorerons les utilisations pratiques de cette commande polyvalente qui révolutionnera votre approche de l’automatisation sous Linux.

1. Matériel nécessaire

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un système Linux avec accès au terminal
  • La commande seq (généralement préinstallée sur la plupart des distributions)
  • Connaissances de base des commandes shell
  • Accès en écriture dans le répertoire de travail
  • Outils complémentaires : bc, awk, xargs (habituellement disponibles)

2. Génération de nombres basique

2.1 Création de séquences simples

La fonction principale de seq consiste à imprimer des nombres en séquence. Pour générer une séquence de 1 à 5, utilisez simplement :

seq 5

Cette commande affichera les nombres 1, 2, 3, 4, 5 sur des lignes séparées.

2.2 Définition d’un point de départ personnalisé

Pour commencer à partir d’un nombre spécifique, fournissez le nombre de départ comme premier argument et le nombre final comme second :

seq 3 7

Cela génère les nombres de 3 à 7 inclus.

LIRE AUSSI  Le beta de Fedora 42 arrive avec COSMIC

2.3 Utilisation d’incréments personnalisés

Pour créer des séquences avec des pas spécifiques, placez l’incrément entre les valeurs de début et de fin. Par exemple, pour générer les nombres impairs de 1 à 10 :

seq 1 2 10

Cette commande produit : 1, 3, 5, 7, 9.

2.4 Comptage en ordre décroissant

Pour compter à rebours, utilisez un incrément négatif :

seq 10 -1 1

Cela affiche les nombres de 10 à 1 en ordre décroissant.

3. Génération de nombres décimaux

La commande seq gère parfaitement les nombres à virgule flottante, ce qui s’avère utile pour les calculs scientifiques ou le traitement de données nécessitant une précision décimale.

Pour compter de 0,5 à 2,0 par incréments de 0,3 :

seq 0,5 0,3 2,0

Important : Utilisez la virgule comme séparateur décimal selon les conventions françaises.

4. Personnalisation des séparateurs

Par défaut, seq sépare chaque nombre par un caractère de nouvelle ligne. L’option -s (séparateur) permet de définir un séparateur personnalisé.

Pour générer des nombres de 1 à 5 sur une seule ligne séparés par une virgule et un espace :

seq -s ", " 1 5

Alternativement, vous pouvez utiliser xargs pour placer tous les nombres sur une ligne :

seq 1 10 | xargs

5. Génération de séquences formatées

5.1 Formatage avec des zéros de remplissage

Pour générer des nombres de 1 à 10 avec des zéros de remplissage pour obtenir deux chiffres :

seq -f "%02g" 1 10

Le format %02g indique à seq de remplir le nombre pour qu’il fasse 2 chiffres avec des zéros en tête.

5.2 Option de largeur égale

Pour une tâche plus simple de remplissage avec des zéros, utilisez l’option -w :

seq -w 1 100

Cette commande assure que tous les nombres ont la même largeur en ajoutant des zéros en tête.

5.3 Création de fichiers avec noms formatés

Combinez seq avec touch et xargs pour générer plusieurs fichiers vides :

seq -f "texte_%02g.txt" 1 5 | xargs touch

Après exécution, vous obtiendrez des fichiers (texte_01.txt, texte_02.txt, etc.) qui se trieront toujours dans l’ordre numérique correct.

6. Génération de fichiers de test avec contenu

Utilisez seq pour créer des fichiers de test avec des données factices en combinant seq avec des boucles et la redirection.

6.1 Création de fichiers simples

Ce script crée cinq fichiers, chacun contenant une ligne de texte indiquant son numéro :

for i in $(seq 1 5); do
  echo "Ceci est le fichier de test numéro $i" > fichiertesteur_$i.txt
done

6.2 Génération de fichiers multi-lignes

Le script suivant crée cinq fichiers, chacun contenant 100 lignes numérotées de manière unique :

for i in $(seq 1 5); do
  for ligne in $(seq 1 100); do
    echo "Fichier $i, Ligne $ligne: Contenu aléatoire ici"
  done > "fichier_$i.txt"
done

7. Répétition de commandes un nombre spécifique de fois

Parfois, vous devez exécuter une commande plusieurs fois lorsque seule la répétition compte, pas les nombres réels.

LIRE AUSSI  Linux Mint Debian Edition 7 : découverte de la première version bêta avec des fonctionnalités améliorées

7.1 Test de stress d’applications

Utilisez seq avec xargs pour tester la charge d’un site web :

seq 10 | xargs -I {} curl -s http://monsite.com > /dev/null

Cette commande sollicite le site web dix fois, aidant à vérifier si votre serveur web gère correctement les requêtes simultanées.

7.2 Répétition avec boucles for

Pour afficher “Bonjour, monde !” cinq fois :

for i in $(seq 1 5); do
  echo "Bonjour, monde !"
done

8. Création d’horodatages et d’intervalles temporels

8.1 Génération d’intervalles de temps

Pour obtenir une liste de chaque intervalle de 15 minutes dans une heure :

seq -f "%02g" 0 15 59

Cela produit : 00, 15, 30, et 45.

8.2 Création d’horodatages précis

Cet exemple imprime un horodatage pour chaque minute sur les 10 prochaines minutes :

debut=$(date +%s)
for i in $(seq 0 9); do
  echo "$(date -d "@$((debut + i*60))" +"%Y-%m-%d %H:%M:%S")"
done

Note : Le script imprime tous les 10 horodatages futurs immédiatement. Il n’attend pas une minute entre les sorties.

9. Vérification de la disponibilité des ports

Utilisez seq pour scanner une plage de ports et vérifier leur disponibilité.

9.1 Scan avec netcat

for port in $(seq 8000 8010); do
  nc -z -v -w 1 localhost $port &>/dev/null && echo "Port $port est OUVERT"
done

Explication des options :

  • -z : Scanne les services en écoute sans envoyer de données
  • -v : Fournit une sortie détaillée (que nous masquons)
  • -w 1 : Définit un délai d’attente de 1 seconde
  • &>/dev/null : Redirige toute la sortie de nc

9.2 Méthode alternative avec Bash

for port in $(seq 8000 8100); do
  (echo > /dev/tcp/localhost/$port) &>/dev/null && echo "Port $port est ouvert"
done

10. Boucles sur des plages dans les scripts

Seq rend les boucles sur des plages numériques propres et claires, particulièrement pour des plages complexes ou des nombres à virgule flottante.

10.1 Script de traitement par lots

!/bin/bash

ELEMENT_DEBUT=25 ELEMENT_FIN=75 echo "Début du traitement des éléments de $ELEMENT_DEBUT à $ELEMENT_FIN..." for numero_element in $(seq $ELEMENT_DEBUT $ELEMENT_FIN); do echo "Traitement de l'élément

$numero_element..."

sleep 0,1

simule le travail

done echo "Tous les éléments traités !"

10.2 Création de sauvegardes quotidiennes

Créer des sauvegardes quotidiennes pour un mois entier devient simple avec :

for jour in $(seq -w 1 31); do
  tar -czf sauvegarde_2025-10-$jour.tar.gz /donnees
done

11. Division de fichiers basée sur les lignes

Si vous devez diviser un gros fichier en petits morceaux, seq peut vous aider à calculer les plages de lignes pour chaque morceau.

lignes=$(wc -l  morceau_$(printf "%04d" $debut).txt
done

Ce script obtient d’abord le nombre total de lignes, puis utilise seq pour générer le numéro de ligne de début pour chaque morceau.

LIRE AUSSI  Les meilleurs gestionnaires d'archives natifs pour Linux

12. Opérations mathématiques

12.1 Calcul de sommes avec bc

Pour additionner tous les nombres de 1 à 100 :

seq -s "+" 1 100 | bc

Ici, au lieu de séparer les nombres par des nouvelles lignes, nous plaçons un signe + entre eux.

12.2 Calculs avec awk

Vous pouvez obtenir le même résultat avec awk :

seq 1 100 | awk '{s+=$1} END{print s}'

13. Conseils avancés et bonnes pratiques

13.1 Optimisation des performances

Attention : Pour de très grandes séquences, considérez l’utilisation de boucles Bash natives qui peuvent être plus efficaces :

for ((i=1; i<=1000000; i++)); do
  echo $i
done

13.2 Gestion des erreurs

Toujours vérifier la validité des arguments avant d’utiliser seq dans des scripts de production :

if [[ $1 =~ ^[0-9]+$ ]] && [[ $2 =~ ^[0-9]+$ ]]; then
  seq $1 $2
else
  echo "Erreur : Arguments invalides"
  exit 1
fi

Conclusion

La commande seq, bien qu’elle puisse sembler être un utilitaire mineur, résout élégamment de nombreux petits problèmes répétitifs. Elle se combine avec d’autres commandes Linux pour créer des one-liners puissants et des scripts efficaces, en faisant un outil essentiel pour tout utilisateur de ligne de commande.

Que vous automatisiez des tâches de maintenance système, génériez des données de test, ou effectuiez des calculs rapides, seq offre une solution simple et élégante. Sa polyvalence et sa facilité d’utilisation en font un compagnon indispensable dans votre arsenal d’outils Linux.

En maîtrisant ces techniques, vous pourrez transformer des tâches répétitives fastidieuses en scripts automatisés efficaces, améliorant ainsi votre productivité et la fiabilité de vos processus système.

Rédactrice spécialisée en édition de site. Formation de journaliste et passionnée par les nouvelles technologies, l’intelligence artificielle et la rédaction web.

Laisser un commentaire