9 Praktiske Måter å Bruke Linux seq-kommandoen På

Oppdag kraften i seq-kommandoen: fra enkel tallgenerering til avansert filhåndtering, nettverksskanning og matematiske beregninger – en uunnværlig verktøy for kommandolinjebrukere.

seq-kommandoen er langt mer enn bare en enkel tallutskriver. Det er en fundamental byggekloss du kan bruke til å lage testfiler, kontrollere løkker, utføre nettverksskanninger og kjøre matematiske beregninger. Her er noen vanlige måter å bruke seq-kommandoen på.

Grunnleggende Tallgenerering

I sin kjerne printer seq tall i sekvens. Du trenger bare å gi den ett enkelt tall, og den vil telle fra 1 opp til det tallet. For eksempel:

seq 5

Dette skriver ut tall fra 1 til 5. Det er den enkleste formen, men magien begynner når du justerer start, steg, format, eller pipe outputen til andre kommandoer.

For eksempel, hvis du vil starte fra et spesifikt tall, angir du et startnummer som det første argumentet og et slutt nummer som det andre.

seq 3 7

Dette vil generere tall fra 3 til 7 (dvs. 3, 4, 5, 6, 7).

Noen ganger trenger du å hoppe over tall i en sekvens, som å generere kun partall eller telle med femmere. Inkrementargumentet, plassert mellom start- og sluttverdiene, håndterer dette. For eksempel, for å generere oddetall fra 1 til 10, bruk et steg på 2:

seq 1 2 10

Denne kommandoen forteller seq å starte på 1, gå opp til 10, men ta steg på 2, noe som gir 1, 3, 5, 7 og 9.

Du kan også telle bakover. For å gjøre det, angir du et negativt inkrementverdi som dette:

seq 10 -1 1

Dette skriver ut tall fra 10 ned til 1 med et inkrement på -1.

Generere Flytende Desimal-Tall

seq er ikke begrenset til hele tall; det håndterer flytende desimal-tall like lett. Dette er nyttig for vitenskapelige beregninger eller når man jobber med data som krever desimalpresisjon.

For eksempel, for å telle fra 0.5 til 2.0 med steg på 0.3, kjør:

seq 0.5 0.3 2.0

Og du vil få en sekvens av desimaler med spesifikk steglengde.

Bruk av Tilpasset Separator

Som standard skiller seq hvert tall med et linjeskift. -s (separator) flagget lar deg definere en tilpasset separator. For eksempel, for å generere tall fra 1 til 5 på en enkelt linje, separert med et komma og et mellomrom, kjør:

seq -s ", " 1 5

Alternativt kan du pipe outputen til xargs for å plassere alle tallene på en enkelt linje separert med mellomrom. xargs leser elementer fra standard input og konverterer dem til argumenter for en annen kommando (som standard, echo).

seq 1 10 | xargs

Generere Formaterte Sekvenser

La oss si at du vil generere tall fra 1 til 10, men du vil at de alle skal være to sifre lange med et ledende null. For å oppnå dette, kan du bruke -f-valget sammen med en formatspesifiserer som dette:

seq -f "%02g" 1 10

Her er %g standard tallformat, og 02 forteller seq å fylle opp tallet til å være 2 sifre bred med ledende nuller.

For den vanlige oppgaven med å bare fylle opp alle tallene med ledende nuller for å ha samme bredde, gir seq den enda enklere -w (lik bredde) flagget.

seq -w 1 100

Denne kommandoen sikrer at alle tall har lik bredde ved å legge til ledende nuller, noe som gir 001, 002 og 099 til 100.

Denne typen formatering er også perfekt for å lage null-fylte filer som sorter riktig. Ved å kombinere seq med touch og xargs, kan du generere flere tomme filer. For eksempel, for å lage 5 tomme, null-fylte tekstfiler, kjør dette:

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

Etter å ha kjørt dette, vil du ha en liste av filer (text_01.jpg, text_02.jpg, osv.) som alltid vil sortere i riktig numerisk rekkefølge. Du kan også generere filer med datobaserte navn:

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

Denne løkken gir deg filer for hver dag i mars 2025.

Generere Testfiler med Tekst

Bortenfor å generere tall, kan du bruke seq til å lage testfiler med dummy-data. Bare kombiner seq med piping og omdirigering sammen med en for-løkke.

For eksempel, for å teste et skript, kan det være nødvendig med dummy-filer med noe innhold. Dette skriptet lager fem filer, hver inneholdende en linje med tekst som indikerer nummeret sitt:

for i in $(seq 1 5); do
 echo "Dette er testfil nummer $i" > testfile_$i.txt
done

Videre anbefaler jeg også å bruke -w-valget (seq -w 1 5) for å fylle tallene slik at filene sorteres.

Du kan også generere filer med flere linjer med innhold. Det følgende skriptet oppretter fem filer, hver med 100 unikt nummererte linjer:

for i in $(seq 1 5); do
 for line in $(seq 1 100); do
 echo "Fil $i, Linje $line: Noe tilfeldig innhold her"
 done > "fil_$i.txt"
done

Her itererer den ytre løkken over tallene 1 til 5 for filnavn, mens den indre løkken genererer 100 linjer per fil, med utdata omdirigert til en fil basert på telleren i den ytre løkken.

Gjenta en kommando et bestemt antall ganger

Noen ganger må du kjøre en kommando flere ganger når du bare bryr deg om repetisjonen, ikke de faktiske tallene. For eksempel kan det hende du tester nettverkslatens med ping eller kjører et skript gjentatte ganger for å sjekke etter en feil. seq gir en ren måte å gjøre dette på uten å skrive en tradisjonell for-løkke.

For eksempel kan du bruke seq med xargs for å stresse applikasjoner eller sjekke om en tjeneste starter korrekt.

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

Denne kommandoen treffer nettstedet ti ganger, noe som kan hjelpe deg å verifisere om webserveren din håndterer samtidige forespørselen riktig.

seq fungerer også utmerket med for-løkker for å gjenta handlinger. For å skrive ut Hei, Verden! fem ganger, kan du bruke:

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

Dette skriver meldingen fem ganger.

Opprett tidsstempler eller tidsintervaller

En annen utmerket bruk av seq er å generere en serie med tidsstempler, spesielt når du bygger testdata eller simulerer logger. De kan representere sekunder, minutter eller dager.

Anta at du trenger en liste over hver 15-minutters intervall i en time for en rapport.

seq -f "%02g" 0 15 59

Denne kommandoen produserer 00, 15, 30, og 45.

Du kan også generere presise tidsstempler. Dette eksemplet skriver ut et tidsstempel for hvert minutt i løpet av de neste 10 minuttene:

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

Skripten skriver ut alle 10 fremtidige tidsstempler med en gang. Den venter ikke ett minutt mellom utdataene. Hvis du vil ha en ekte tidsklokke som skriver ut én linje per minutt, legg til sleep 60 inne i løkken.

For å opprette tidsstempler i HH:MM-format for en hel time, kan du bruke en enkel løkke:

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

Dette vil liste 14:00, 14:01, helt opp til 14:59. Det er en kraftig måte å generere strukturert tidsserie-data rett fra terminalen din.

Sjekk porttilgjengelighet

Hvis du er systemadministrator eller utvikler, kan du også bruke seq for å skanne et område av porter og sjekke deres tilgjengelighet. For eksempel kan det hende du må distribuere en applikasjon, men er usikker på hvilken port som er fri. La oss skanne et område av porter på din lokale maskin for å se hvilke som er åpne.

Vi kan bruke seq til å generere portnumre og pipe dem til et nettverksverktøy som nc for å sjekke tilkoblinger.

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

Her er en oversikt over kommandoen:

  • for port in $(seq 8000 8010): Går gjennom hvert portnummer.
  • nc -z -v -w 1 localhost $port: Dette er kjernekommandoen som prøver å opprette en tilkobling.
  • -z: Scanner etter lytte tjenester uten å sende data.
  • -v: Gir detaljert utdata (som vi skjuler).
  • -w 1: Setter en time-out på 1 sekund.
  • &> /dev/null: Omdirigerer all utdata fra nc slik at vi bare ser vår sluttmelding.
  • && echo "Port $port er ÅPEN": &&-operatøren sikrer at echo-kommandoen bare kjøres hvis nc-kommandoen lykkes (dvs. porten er åpen).

Denne metoden krever passende privilegier og verktøy. Bruk dem ansvarlig og kun på systemer du eier eller har tillatelse til å teste.

Alternativt kan du bruke en Bash-spesifikk funksjon som ikke krever nc:

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

For alvorlig portskanning, bør du bruke dedikerte verktøy som.

nmap, men for raske sjekker under utvikling, fungerer denne seq-metoden utmerket.

Sløyfer Gjennom Intervaller i Skript

Mens Bash har sine egne måter å lage sløyfer på, er det ofte mer portabelt og lesbart å bruke seq, spesielt for komplekse intervaller eller flyttallsnumre. Når du skriver skript, gjør seq det enkelt å loope over numeriske intervaller rent og klart.

For eksempel, for å behandle en gruppe med elementer mellom to punkter, kan du definere START og END variabler. Sløyfen håndterer resten:

#!/bin/bash
START_ITEM=25
END_ITEM=75
echo "Starter å behandle elementer fra $START_ITEM til $END_ITEM..."
for item_number in $(seq $START_ITEM $END_ITEM); do
 echo "Behandler element #$item_number..."
 sleep 0.1 
done
echo "Alle elementer behandlet!"

Dette skriptet er enkelt å vedlikeholde, du trenger bare å endre variablene øverst.

I tillegg kan du bruke den samme ideen i virkelige scenarier som databehandling i batch. For eksempel kan du sjekke diskbruk for en serie nummererte kataloger ved å bruke dette:

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

Fordi seq støtter padding, kan du holde alt pent sortert. Å lage daglige sikkerhetskopier for en hel måned blir enkelt med:

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

Denne en-linjeren lager 31 komprimerte arkiver med riktig formaterte navn (backup_2025-09-01.tar.gz, osv.), noe som gjør sortering og henting mye enklere.

Dele Filer Basert På Linjer

Hvis du trenger å dele en stor fil i mindre biter, kan seq hjelpe deg å beregne linjeintervallene for hver bit. Mens split-kommandoen er laget for dette, gir bruk av seq mer granular kontroll over prosessen og filnavngivningen.

For eksempel, for å dele bigfile i biter med 100 linjer hver, kjør dette:

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

Dette skriptet henter først total linjetall. Deretter bruker for-løkken seq for å generere startlinjenummeret for hver bit (1, 101, 201, osv.). Inne i sløyfen, bruker sed til å hente den blokken av linjer og lagre den i en unikt navngitt fil.

Utføre Matematisk Operasjoner

seq er en flott følgesvenn for kommandolinjekalkulatorer som bc og awk. Du kan pipe en serie med tall direkte inn i et annet program for å utføre en beregning.

For å summere alle tall fra 1 til 100, bruk dette:

seq -s "+" 1 100 | bc

Her, i stedet for å separere tall med linjeskift, plasserer vi et +-tegn mellom dem. Utdataene er en enkelt streng sendt som input til bc, som evaluerer uttrykket.

Med awk kan du oppnå det samme resultatet:

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

Denne mønsteret av å generere, formatere og beregne er ekstremt nyttig for rask dataanalyse på kommandolinjen.

Selv om seq virker som et lite verktøy, løser det elegant mange små, repetitive problemer. Det kombineres med andre Linux-kommandoer for å lage kraftige en-linjere og skript, noe som gjør det til et essensielt verktøy for enhver kommandolinjebruker.

Hvis du vil lese flere artikler som 9 Praktiske Måter å Bruke Linux seq-kommandoen På, kan du besøke kategorien Linux.

Index
  1. Grunnleggende Tallgenerering
    1. Generere Flytende Desimal-Tall
    2. Bruk av Tilpasset Separator
  2. Generere Formaterte Sekvenser
  3. Generere Testfiler med Tekst
  4. Gjenta en kommando et bestemt antall ganger
  5. Opprett tidsstempler eller tidsintervaller
  6. Sjekk porttilgjengelighet
  7. Sløyfer Gjennom Intervaller i Skript
  8. Dele Filer Basert På Linjer
  9. Utføre Matematisk Operasjoner

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

Go up