På Linux kan du finne flere kommandoer med uvanlige funksjoner. En slik kommando er seq, som sender ut en sekvens av tall avhengig av argumentene som er spesifisert.
Men hva kan du muligens gjøre med et kommandolinjeverktøy som kaster en mengde sifre på deg? Du finner ut i denne guiden.
Hva er seq Command?
Som nevnt ovenfor genererer seq-kommandoen i Linux raskt en sekvens med numeriske tegn. Brukere kan sende argumenter til kommandoen for å generere forskjellige kombinasjoner av tall. For eksempel kan du få en inkrementert liste ved å sende et ekstra argument til sekv.
Men hva er den praktiske bruken av kommandoen? Mens seq kanskje ikke virker som et kraftig verktøy i sin helhet, kan du dra nytte av kommandoen ved å implementere den med andre Linux-verktøy. Du kan også bruke seq in bash-skript å avdekke sin sanne kraft.
Hvordan bruke seq i Linux
Seq tar bare noen få argumenter, noe som gjør det til et lettlært verktøy for alle.
Grunnleggende syntaks
Den grunnleggende syntaksen til kommandoen er:
seq alternativnumre
...hvor alternativer er flaggene du kan spesifisere for å påkalle forskjellige metoder for kommandoen og tall er argumentene du sender for å generere den numeriske sekvensen.
Generer en liste over tall
Sekvensen argumenter følger inngangsformatet gitt nedenfor:
sekv. sist
seq først sist
seq første økning sist
Når du bare angir ett nummer, tolker seq det som den øvre grensen for listen og genererer en sekvens som starter fra ett og opp til det angitte nummeret.
seq 5
Den nevnte kommandoen vil sende følgende:
1
2
3
4
5
Når seq mottar to tall som inngang, tolker den dem som nedre grense og øvre grense for sekvensen. Slik genererer du en liste med tall fra fire til åtte:
sekvens 4 8
Produksjon:
4
5
6
7
8
Men når du sender tre tall til kommandoen, tolker det det andre argumentet som trinnnummeret. For eksempel:
seq 3 2 13
Den nevnte kommandoen vil sende en liste med tall som starter fra tre til 13 med en økning på to.
3
5
7
9
11
13
Legg til en skilletegn mellom tallene
Som standard bruker seq et nytt linjetegn som skilletegn for listen. Dette er grunnen til at hvert nummer i listen er på en egen linje.
Du kan endre denne standardadferden og bruke en egendefinert skilletegn ved hjelp av -s flagg. For å bruke Periode (.) karakter som skilletegn:
seq -s. 3 7
Produksjon:
3.4.5.6.7
Husk at noen tegn som Tilde (~) må være vedlagt tilbud. Dette er fordi terminalen bruker Tilde karakter for å betegne /home katalog, og det gjenspeiles i utdataene hvis du ikke legger til anførselstegnene.
seq -s ~ 3 7
Produksjon:
3 / hjem / 4 / hjem / 5 / hjem / 6 / hjem / 7
På den annen side, når du pakker skilletegn med anførselstegn:
seq -s '~' 3 7
Produksjon:
3~4~5~6~7
Juster utdataformatet
Du kan også endre formatet for utgangssekvensen ved hjelp av -f flagg. Som standard trekker seq ut formatstilen fra brukerinntastingen. For eksempel, hvis du spesifiserer tallene 0,1 og 0,5, vil standardutgangen ha et flytformatnummerformat.
seq 0,1 0,5
Produksjon:
0.1
0.2
0.3
0.4
0.5
Du kan spesifisere et tilpasset utdataformat ved hjelp av de forskjellige konverteringsspesifikasjonene som% a,% e,% f,% g,% A,% E,% F og% G.
Du kan bruke % f spesifikator hvis du vil at utdataene skal følge et tallformat med flytende punkt.
seq-f% f 4 7
Produksjon:
4.000000
5.000000
6.000000
7.000000
Slik endrer du presisjonen med opptil to desimaler:
seq -f% 0.2f 4 7
Produksjon:
4.00
5.00
6.00
7.00
Du kan også transformere utdataene fullstendig ved å spesifisere en utdatamal. For eksempel for å få en liste over alle IP-adressene som begynner med 192.168.5.x:
seq -f 192.168.5.% g 1 233
Produksjon:
For å legge til polstring i utgangen, kan du bruke -w flagg. De -w flagget opprettholder bredden på utdataene i samsvar med det største angitte antallet.
Å generere en sekvens av tall mellom ett og 1000 med en økning på 100 mens du holder en konstant bredde:
sek. -w 1100 1000
Produksjon:
0001
0101
0201
0301
0401
0501
0601
0701
0801
0901
Få seq Kommandolinjehjelp
Mens seq er enkelt å bruke, kan det hende at brukere føler behov for det sjekk manuell side for kommandoen. De --hjelp flagg vil vise seq mansiden:
sekvens --hjelp
Produksjon:
Praktiske eksempler
Som allerede nevnt brukes seq primært med andre Linux-kommandoer, for eksempel berøring og uttrykk.
Utfør matematiske operasjoner
Hvis du raskt vil legge til eller trekke fra et bestemt tallområde, kan du gjøre det enkelt ved å bruke seq inni ekspr, som er en Linux-kommando som behandler inngangen som et uttrykk og viser den tilsvarende utgangen.
Slik legger du til alle tallene mellom ett og 100:
uttrykk `(seq -s" + "1100)`
Seq-kommandoen genererer en utgang som følger:
1 + 2 + 3 + 4 + 5 + 6...
Expr behandler det som et inngangsuttrykk og leverer løsningen.
5050
Du kan utføre andre matematiske operasjoner ved ganske enkelt å erstatte skilletegnet i seq-kommandoen med andre operatorer.
Opprett raskt flere filer
Hvis du vil opprette flere filer på Linux hvis navn følger et lignende mønster, kan du gjøre det enkelt ved å bruke berøringskommandoen og seq.
For eksempel for å lage 10 filer med navnet fil-x.txt, hvor x er et tall fra en til 10:
trykk på $ (seq -f "fil% g.txt" 1 10)
Touch vil opprette filene for deg på et blunk.
Implementering av sekvenser i skript
Vurder at du skriver en nettverksskannerverktøy som Nmap i bash, vil du kanskje få en liste over alle åpne porter i et nettverk. Men for det må du pinge hver port (totalt 65535) og analysere svaret.
For å spare tid kan du velge å bruke seq og generere en liste over IP-adresser og portkombinasjoner som du kan bruke i skriptet.
La oss anta at du vil få listen over alle portene til en enhet med IP-adressen 1.2.3.4. Her er en rask kommando for å generere ønsket utgang:
seq -f 1.2.3.4:%g 1 65535
Produksjon:
Du kan deretter bruke denne utgangen som en liste og krysse gjennom den, sjekke hver port ved hjelp av skriptet og analysere om det er åpent eller ikke.
Hvor raskt genererer antall tall?
Du tenker kanskje på om du kan oppnå lignende resultater ved hjelp av en for loop in bash, hvorfor velge seq for oppgaven? Dette er fordi den virkelige kraften til seq ligger i hastigheten. Seq er raskere enn noen annen kommando som genererer en sekvens av tall på Linux.
Du kan til og med teste hastigheten ved hjelp av tidsverktøyet på Linux. La oss se hvor lang tid det tar for seq å generere en liste med en million tall som starter fra ett.
tid seq 1000000
Ser du på utdataene nedenfor, kan du se at det bare tok seq rundt fire sekunder å generere en liste med en million tall.
Kraften til Linux Command Line
Seq er ikke det eneste verktøyet i Linux som fokuserer sterkt på å levere raske og nøyaktige resultater. Mens du kan generere en liste over tall ved hjelp av a for loop in bash, er det ikke en anbefalt praksis med tanke på hvor lynrask seq egentlig er.
Linux-kommandolinjen gir deg mer kontroll over operativsystemet og dets funksjoner, noe som også er en grunn til at du bør begynne å bruke terminalen over GUI i dag.
Linux-kommandolinjen har høy grunn når det gjelder ytelse, kontroll og brukervennlighet.
Les Neste
- Linux
Deepesh er Junior Editor for Linux på MUO. Han har skrevet informasjonsinnhold på internett i over 3 år. På fritiden liker han å skrive, høre på musikk og spille gitaren.
Abonner på vårt nyhetsbrev
Bli med på nyhetsbrevet vårt for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!
Ett steg til…!
Bekreft e-postadressen din i e-posten vi nettopp sendte deg.