Cum să utilizați comanda seq pe Linux
Publicat: 2022-01-29 Comanda Linux seq
generează liste de numere cât ai clipi. Dar cum poate fi folosită această funcționalitate în practică? Vă vom arăta cum vă poate fi util seq.
Comanda seq
La prima vedere, comanda Linux seq
pare a fi ceva ciudat. Vă permite să generați secvențe de numere rapid și atât! Cuvântul cheie aici, totuși, este „rapid”. Într-o clipă, vei vedea cât de repede poate rula această mică comandă.
Oricum, indiferent de modul în care sunt generate, cât de utilă este o listă de numere? Comanda seq
a fost adăugată la cea de-a 8-a ediție a Unix în 1985. A fost acolo de atunci, așa că trebuie să facă ceva util.
Filosofia Unix este că este plin de mici utilități care fac un lucru și îl fac bine. Una dintre principiile centrale ale acestei filozofii este de a scrie programe care acceptă input de la alte programe. Desigur, asta înseamnă, de asemenea, că aceste programe trebuie să genereze rezultate care pot fi folosite ca intrare de către alte programe.
Comanda seq
devine proprie atunci când este folosită cu alte comenzi care folosesc ieșirea sa, fie prin conducte, fie prin extinderea liniei de comandă.
Generarea listei de bază
Dacă lansați seq
cu un singur număr ca parametru de linie de comandă, se numără de la unu la acel număr. Apoi tipărește numerele în fereastra terminalului, câte un număr pe linie, după cum se arată mai jos:
secv. 6
Dacă introduceți două numere pe linia de comandă, primul va fi numărul de început și al doilea va fi numărul de final, după cum se arată mai jos:
secv. 4 10
Puteți seta o dimensiune a pasului incluzând un al treilea număr. Se află între numerele de început și de sfârșit. Introducem următoarele pentru a cere seq
să creeze o listă de numere care începe cu șase, se termină la 48 și folosește un pas de șase:
secv. 6 6 48
Numărând înapoi
De asemenea, putem cere seq
să creeze o listă de numere de la cel mai mare la cel mai mic. Pentru a face acest lucru, totuși, trebuie să oferim un pas care este negativ.
Următoarea comandă produce o listă care numără de la 24 la 12 în pași de 6, deoarece introducem pasul ca număr negativ:
secv. 24 -6 12
Numărarea cu zecimale
Numerele de început, de sfârșit și de pas pot fi, de asemenea, zecimale. Dacă oricare dintre numere este zecimală, celelalte sunt, de asemenea, tratate ca zecimale. Următoarea comandă generează o listă de numere cu un pas de 0,2:
secv 1 0,2 2
Viteza secv
seq
este extraordinar de rapid - singurul blocaj este timpul necesar pentru a introduce comanda în fereastra terminalului. Pentru a-i testa viteza, să cerem o listă de 250.000 de numere.
Introducem următoarele, folosind comanda time
pentru a vedea cât timp durează procesul:
timp secv 250000
Rezultatele sunt afișate sub listă. Chiar și pe computerul nostru de testare cu putere moderată, seq
este surprinzător de rapid.
Întreaga listă a fost creată și scrisă pe ecran în aproximativ 1/3 de secundă. Dacă redirecționăm lista într-un fișier, putem evita chiar și suprasarcina de tastare în fereastra terminalului.
Pentru a face acest lucru, introducem următoarele:
time seq 250000 > numere.txt
Timpul necesar pentru a completa lista și a crea fișierul este acum de aproximativ 1/7 de secundă.
Folosind un separator
Un caracter de linie nouă este caracterul implicit afișat între fiecare număr dintr-o listă. De aceea apar ca o listă verticală, cu fiecare număr pe linia lui. Dacă aveți nevoie, puteți furniza un alt separator.
De exemplu, să presupunem că trebuie să creați o listă delimitată prin virgulă, o listă împărțită prin două puncte sau orice alt semn de punctuație sau simbol. Delimitatorul este de fapt un șir, așa că puteți folosi mai mult de un caracter.
Vom folosi opțiunea -s
(separator). Următoarea comandă va produce o listă delimitată prin virgulă:
secv s, 6 6 36
Această comandă va folosi două puncte ( :
) ca separator:
secv -s: 6 6 36
Această comandă îi spune lui seq
să folosească două cratime ( -
) ca separator:
secv. -s-- 6 6 36
Utilizarea șirurilor de format
Comanda seq
acceptă și șiruri de format în stil limbaj C. Acestea vă permit să formatați rezultatul cu mult mai mult control decât specificarea unui separator. Pentru a utiliza un șir de format, utilizați opțiunea -f
(format).
Următoarea comandă îi spune lui seq
să folosească zerouri pentru a completa rezultatul cu două caractere:
secv. -f „%02g” 6
Putem formata șirul cu orice text dorim și plasăm numărul oriunde în șir, după cum urmează:
seq -f „Numărul %02g într-un șir de format asemănător C” 6
O modalitate rapidă de a seta căptușeala zero
Cea mai rapidă modalitate de a seta umplutura zero este să utilizați opțiunea -w
(lățime egală). Acest lucru îi spune lui seq
să folosească zerouri pentru a completa numerele, astfel încât toate să aibă aceeași lățime cu cel mai mare număr.
Următoarea comandă numără de la 0 la 1.000 în pași de 100 și toate numerele vor fi completate cu zerouri:
secv. -w 0 100 1000
Cel mai lung număr are patru caractere, astfel încât toate numerele mai înguste sunt completate cu zerouri la acea lățime (chiar și 0 este completat cu patru zerouri).
Conducte secv Into bc
Setând separatorul ca simbol matematic și introducând lista în comanda bc
, putem evalua numerele din acea listă.
Următoarea comandă generează o listă de numere separate prin asteriscuri ( *
), începând cu unu și terminând cu șase:
secv. -s* 6
Dacă introducem lista respectivă în bc
, aceasta evaluează lista folosind asteriscurile ( *
) ca simboluri de înmulțire:
secv -s* 6 | bc
Putem face acest lucru și cu alte simboluri. Comanda de mai jos folosește semnul plus ( +
) pentru a crea o listă în care sunt adăugate toate numerele:
secv. -s+ 5
Introducem următoarele pentru a-l introduce în bc
și evaluăm lista:
secv -s+ 5 | bc
Crearea fișierelor cu seq
Comanda touch
actualizează marcajele de oră și dată pe fișiere. Dacă fișierul nu există, atingeți îl creează. Putem folosi extinderea liniei de comandă cu touch
and seq
pentru a crea o colecție de fișiere cu nume tematic, dar numerotate diferit.
Vom crea un set de 10 fișiere cu același nume de bază și un număr diferit (fișier-1.txt, fișier-2.txt și așa mai departe). Introducem următoarele:
atinge $(seq -f „fișier-%g.txt” 1 10)
Apoi, introducem următoarele pentru a verifica fișierele:
fisier ls*
Folosind seq în buclele Bash
Putem folosi seq
în scripturile Bash pentru a controla buclele cu zecimale.
Tastați următorul text într-un editor, apoi salvați-l ca „loops.sh”:
#!/bin/bash pentru val în $(seq 5 0,2 6,6); do echo „Valoarea este acum: $val” Terminat
Apoi, introducem următoarele pentru a face noul nostru script executabil:
chmod +x loop.sh
Când rulăm scriptul, contorul de bucle este tipărit în fereastra terminalului. Putem apoi tasta următoarele pentru a vedea creșterea numărului de bucle zecimale cu fiecare iterație a buclei:
./buclă.sh
Amintiți-vă că seq
poate conta înapoi, de asemenea; îl poți folosi în bucle în același mod.
Frumos și simplu
Un lucru despre seq
este că nu există prea multă curbă de învățare. Are o pagină de man
înviorător de scurtă, dar o puteți folosi în continuare în moduri interesante.
Deoarece adesea trebuie să creăm rapid fișiere de testare cu dimensiuni realiste, folosim seq
cu un șir de format. Apoi redirecționăm rezultatul pentru a crea un fișier care să conțină atâtea rânduri de date fictive câte dorim.
Comenzi Linux | ||
Fișiere | tar · pv · cat · tac · chmod · grep · diff · sed · ar · om · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · tip · redenumire · zip · dezarhivare · montare · demontare · instalare · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm | |
Procese | alias · ecran · sus · frumos · renice · progres · strace · systemd · tmux · chsh · istoric · la · lot · gratuit · care · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · da · kill · sleep · sudo · su · time · groupadd · usermod · grupuri · lshw · shutdown · repornire · stop · poweroff · passwd · lscpu · crontab · data · bg · fg | |
Rețele | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
LEGATE: Cele mai bune laptopuri Linux pentru dezvoltatori și entuziaști