9 façons pratiques d'utiliser la commande Linux SEQ
Agence web » Actualités du digital » 9 façons pratiques d'utiliser la commande Linux SEQ

9 façons pratiques d'utiliser la commande Linux SEQ

La commande SEQ est bien plus qu'une simple imprimante de numéro. Il s'agit d'un bloc de construction fondamental que vous pouvez utiliser pour créer des fichiers de test, contrôler les boucles, effectuer des analyses de réseau et exécuter des calculs mathématiques. Voici quelques façons courantes d'utiliser la commande SEQ.

Génération de nombres de base

À son cœur, SEQ imprime les numéros en séquence. Il vous suffit de lui donner un seul numéro, et il comptera de 1 à ce numéro. Par exemple:

        seq 5
    

Cela imprime les numéros de 1 à 5. C'est la forme la plus simple, mais la magie commence lorsque vous modifiez le début, l'étape, le format ou le tuyau de la sortie dans d'autres commandes.

Par exemple, si vous souhaitez commencer à partir d'un numéro spécifique, fournissez un numéro de départ comme premier argument et un numéro de fin comme seconde.

seq 3 7

Cela générera des nombres de 3 à 7 (c'est-à-dire 3, 4, 5, 6, 7).

Parfois, vous devez sauter des nombres dans une séquence, comme générer uniquement des nombres ou des comptes par Fives. L'argument d'incrément, placé entre les valeurs de début et de fin, gère cela. Par exemple, pour générer des nombres impairs de 1 à 10, utilisez une étape de 2:

seq 1 2 10

Cette commande indique à SEQ de commencer à 1, de passer à 10, mais de prendre des mesures de 2, produisant 1, 3, 5, 7 et 9.

Vous pouvez également compter en arrière. Pour ce faire, fournissez une valeur d'incrément négative comme ceci:

seq 10 -1 1

Cela imprime les numéros de 10 à 1 avec un incrément de -1.

Générer des numéros à virgule flottante

SEQ ne se limite pas aux nombres entiers; Il gère les nombres à virgule flottante (décimal) tout aussi facilement. Ceci est utile pour les calculs scientifiques ou lorsque vous travaillez avec des données qui nécessitent une précision décimale.

Par exemple, pour compter de 0,5 à 2,0 par incréments de 0,3, exécuter:

seq 0.5 0.3 2.0

Et vous obtiendrez une séquence de décimales avec une taille de pas spécifique.

Utilisation d'un séparateur personnalisé

Par défaut, SEQ sépare chaque numéro avec un caractère Newline. L'indicateur -s (séparateur) vous permet de définir un séparateur personnalisé. Par exemple, pour générer des nombres de 1 à 5 sur une seule ligne séparée par une virgule et un espace, exécutez:

        seq -s ", " 1 5
    

Alternativement, vous pouvez tuer la sortie en xargs pour placer tous les nombres sur une seule ligne séparée par des espaces. Xargs lit les éléments de l'entrée standard et les convertit en arguments pour une autre commande (par défaut, Echo).

seq 1 10 | xargs

Générer des séquences formatées

Disons que vous souhaitez générer des nombres de 1 à 10, mais vous voulez qu'ils soient tous deux chiffres avec un zéro leader. Pour y parvenir, vous pouvez utiliser l'option -F avec un spécificateur de format comme celui-ci:

seq -f "%02g" 1 10

Ici,% G est le format de numéro standard, et 02 indique à SEQ de remplir le nombre de 2 chiffres de large avec des zéros principaux.

Pour la tâche commune de simplement rembourrer tous les nombres avec des zéros principaux pour avoir la même largeur, SEQ fournit l'indicateur encore plus simple -W (largeur égale).

seq -w 1 100

Cette commande garantit que tous les nombres ont une largeur égale en ajoutant des zéros principaux, en produisant 001, 002 et 099 à 100.

Ce type de formatage est également parfait pour créer des fichiers zéro cadrés qui le font correctement. En combinant SEQ avec Touch et Xargs, vous pouvez générer plusieurs fichiers vides. Par exemple, pour créer 5 fichiers texte vides et nuls, exécutez ceci:

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

Après avoir exécuté cela, vous aurez une liste de fichiers (text_01.jpg, text_02.jpg, etc.) qui triera toujours dans l'ordre numérique correct. Vous pouvez également générer des fichiers avec des noms basés sur des dates:

seq -f "2025-03-%02g.txt" 1 31 | xargs touch

Cette boucle vous donne des fichiers pour chaque jour de mars 2025.

Générer des fichiers de test avec du texte

Au-delà de la génération de nombres, vous pouvez utiliser SEQ pour créer des fichiers de test avec des données factices. Combinez simplement SEQ avec la tuyauterie et la redirection avec la boucle pour.

Par exemple, pour tester un script, vous pourriez avoir besoin de fichiers factices avec du contenu. Ce script crée cinq fichiers, chacun contenant une ligne de texte indiquant son numéro:

        for i in $(seq 1 5); do
 echo "This is test file number $i" > testfile_$i.txt
done

En outre, je recommande également d'utiliser l'option -W (SEQ -W 1 5) aux numéros de plaquettes afin que les fichiers soient bien.

Vous pouvez également générer des fichiers avec plusieurs lignes de contenu. Le script suivant crée cinq fichiers, chacun contenant 100 lignes numérotées uniquement:

        for i in $(seq 1 5); do
 for line in $(seq 1 100); do
   echo "File $i, Line $line: Some random content here"
 done > "file_$i.txt"
done

Ici, la boucle extérieure itère sur les nombres 1 à 5 pour les noms de fichiers, tandis que la boucle intérieure génère 100 lignes par fichier, avec la sortie redirigé vers un fichier nommé en fonction du compteur de la boucle extérieure.

Répétez une commande un nombre spécifique de fois

Parfois, vous devez exécuter une commande plusieurs fois lorsque vous ne vous souciez que de la répétition, pas des nombres réels. Par exemple, vous pouvez tester la latence du réseau avec un ping ou exécuter un script à plusieurs reprises pour vérifier un bogue. SEQ fournit un moyen propre de le faire sans écrire une boucle traditionnelle.

Par exemple, vous pouvez utiliser SEQ avec XARGS pour les applications de test de contrainte ou vérifier si un service démarre correctement.

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

Cette commande frappe le site Web dix fois, ce qui peut vous aider à vérifier si votre serveur Web gère correctement les demandes simultanées.

SEQ se marie également à merveille avec pour que les boucles répétent les actions. Pour imprimer bonjour, monde! Cinq fois, vous pouvez utiliser:

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

Cela imprime le message cinq fois.

Créer des horodatages ou des intervalles de temps

Un autre excellent cas d'utilisation de SEQ consiste à générer une série de horodatages, en particulier lors de la création de données de test ou de la simulation de journaux. Ils pourraient représenter des secondes, des minutes ou des jours.

Supposons que vous ayez besoin d'une liste de chaque intervalle de 15 minutes en une heure pour un rapport.

seq -f "%02g" 0 15 59

Cela produit 00, 15, 30 et 45.

Vous pouvez également générer des horodatages précis. Cet exemple imprime un horodatage pour chaque minute au cours des 10 prochaines minutes:

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

Le script imprime immédiatement les 10 horodatages futurs. Il n'attend pas une minute entre les sorties. Si vous voulez un ticker en temps réel qui imprime une ligne par minute, ajoutez le sommeil 60 à l'intérieur de la boucle.

Pour créer des horodatages dans un format HH: MM pour une heure complète, vous pouvez utiliser une boucle simple:

        for minute in $(seq -f "%02g" 0 59); do
 echo "14:$minute"
done

Cela indiquera 14:00, 14:01, jusqu'à 14:59. C'est un moyen puissant de générer des données de séries chronologiques structurées directement à partir de votre terminal.

Vérifier la disponibilité du port

Si vous êtes un administrateur système ou un développeur, vous pouvez également utiliser SEQ pour scanner une gamme de ports et vérifier leur disponibilité. Par exemple, vous devrez peut-être déployer une application, mais vous ne savez pas quel port est gratuit. Scanchons une gamme de ports sur votre machine locale pour voir lesquelles sont ouvertes.

Nous pouvons utiliser SEQ pour générer des numéros de port et les tuer sur un utilitaire de réseau comme NC pour vérifier les connexions.

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

Voici une ventilation de la commande:

  • Pour le port de $ (SEQ 8000 8010): boucles via chaque numéro de port.

  • NC -Z -V -W 1 Port LocalHost $: Il s'agit de la commande principale qui tente une connexion.

  • -Z: analyses pour les services d'écoute sans envoyer de données.

  • -v: fournit une sortie verbale (que nous cachons).

  • -W 1: Définit un délai de 1 seconde.

  • &> / dev / null: redirige toutes les sorties de NC, nous ne voyons donc que notre message final.

  • && echo « port $ port est ouvert »: l'opérateur && s'assure que la commande echo s'exécute uniquement si la commande NC réussit (c'est-à-dire que le port est ouvert).

Ces méthodes nécessitent des privilèges et des outils appropriés. Utilisez-les de manière responsable et uniquement sur les systèmes que vous possédez ou avez la permission de tester.

Alternativement, vous pouvez utiliser une fonctionnalité spécifique au bash qui ne nécessite pas de NC:

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

Pour la numérisation des ports sérieuse, vous devez utiliser des outils dédiés comme NMAP, mais pour les vérifications rapides pendant le développement, cette méthode SEQ fonctionne très bien.

Faire boucle dans les gammes dans les scripts

Alors que Bash a ses propres moyens de créer des boucles, l'utilisation de SEQ est souvent plus portable et lisible, en particulier pour les gammes complexes ou les nombres à virgule flottante. Lors de l'écriture de scripts, SEQ rend la boucle sur les gammes numériques propres et claires.

Par exemple, pour traiter un lot d'articles entre deux points, vous pouvez définir les variables de démarrage et de fin. La boucle gère le reste:

        #!/bin/bash
START_ITEM=25
END_ITEM=75
echo "Starting to process items from $START_ITEM to $END_ITEM..."
for item_number in $(seq $START_ITEM $END_ITEM); do
 echo "Processing item #$item_number..."
 sleep 0.1 
done
echo "All items processed!"

Ce script est facile à entretenir, il vous suffit de modifier les variables en haut.

De plus, vous pouvez appliquer la même idée à des scénarios du monde réel comme le traitement des données par lots. Par exemple, vous pouvez vérifier l'utilisation du disque pour une série de répertoires numérotés en utilisant ceci:

        for i in $(seq 1 10); do
 du -sh /var/log/archive_$i 2>/dev/null
done

Parce que SEQ prend en charge le rembourrage, vous pouvez tout garder soigneusement commandé. La création de sauvegardes quotidiennes pendant un mois entier devient simple avec:

        for day in $(seq -w 1 31); do
 tar -czf backup_2025-09-$day.tar.gz /data
done

Cette ligne crée 31 archives compressées avec des noms correctement formatés (Backup_2025-09-01.tar.gz, etc.), ce qui facilite le tri et la récupération.

Fichiers divisés en fonction des lignes

Si vous avez besoin de diviser un grand fichier en morceaux plus petits, SEQ peut vous aider à calculer les plages de ligne pour chaque morceau. Alors que la commande Split est conçue pour cela, l'utilisation de SEQ offre un contrôle plus granulaire sur le processus et la dénomination des fichiers.

Par exemple, pour diviser Bigfile en morceaux de 100 lignes chacun, exécutez ceci:

        lines=$(wc -l < bigfile)
for start in $(seq 1 100 $lines); do
 end=$((start + 99))
 sed -n "${start},${end}p" bigfile > chunk_$(printf "%04d" $start).txt
done

Ce script obtient d'abord le nombre total de lignes. La boucle FOR utilise ensuite SEQ pour générer le numéro de ligne de départ pour chaque morceau (1, 101, 201, etc.). À l'intérieur de la boucle, SED extrait ce bloc de lignes et l'enregistre dans un fichier unique.

Effectuer des opérations mathématiques

SEQ est un excellent compagnon pour les calculatrices en ligne de commande comme BC et AWK. Vous pouvez tuer une série de nombres directement dans un autre programme pour effectuer un calcul.

Pour résumer tous les nombres de 1 à 100, utilisez ceci:

seq -s "+" 1 100 | bc

Ici, au lieu de séparer les nombres avec Newlines, nous plaçons un signe + entre eux. La sortie est une seule chaîne envoyée en entrée en Colombie-Britannique, qui évalue l'expression.

Avec awk, vous pouvez obtenir le même résultat:

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

Ce modèle de génération, de formatage et de calcul est extrêmement utile pour une analyse rapide des données sur la ligne de commande.


Bien que SEQ semble être un service public mineur, il résout élégamment de nombreux petits problèmes répétitifs. Il se combine avec d'autres commandes Linux pour créer des doublures et des scripts puissants, ce qui en fait un outil essentiel pour tout utilisateur de ligne de commande.

★★★★★