Su Linux, puoi trovare diversi comandi con funzionalità insolite. Uno di questi comandi è seq, che emette una sequenza di numeri a seconda degli argomenti specificati.

Ma cosa puoi fare con un'utilità della riga di comando che ti lancia un sacco di cifre? Lo scoprirai in questa guida.

Che cos'è il comando seq?

Come accennato in precedenza, il comando seq in Linux genera rapidamente una sequenza di caratteri numerici. Gli utenti possono passare argomenti al comando per generare diverse combinazioni di numeri. Ad esempio, puoi ottenere un elenco incrementato semplicemente passando un argomento aggiuntivo a seq.

Qual è l'uso pratico del comando però? Anche se seq potrebbe non sembrare uno strumento potente nella sua interezza, puoi trarre vantaggio dal comando implementandolo con altre utility Linux. Puoi anche usare seq in script bash per svelare il suo vero potere.

Come usare seq in Linux

Seq richiede solo pochi argomenti, il che lo rende uno strumento facile da imparare per chiunque.

instagram viewer

Sintassi di base

La sintassi di base del comando è:

Seq opzioni numeri

...dove opzioni sono i flag che puoi specificare per invocare diversi metodi del comando e numeri sono gli argomenti che passi per generare la sequenza numerica.

Genera un elenco di numeri

Gli argomenti Seq seguono il formato di input indicato di seguito:

seq ultimo
seq primo ultimo
seq primo incremento ultimo

Quando si specifica un solo numero, seq lo interpreta come il limite superiore per l'elenco e genera una sequenza a partire da uno fino al numero specificato.

seguito 5

Il comando di cui sopra produrrà quanto segue:

1
2
3
4
5

Quando seq riceve due numeri come input, li interpreta come limite inferiore e limite superiore per la sequenza. Per generare un elenco di numeri da quattro a otto:

seq 4 8

Produzione:

4
5
6
7
8

Ma quando passi tre numeri al comando, interpreta il secondo argomento come numero di incremento. Per esempio:

seq 3 2 13

Il suddetto comando produrrà un elenco di numeri a partire da tre fino a 13 con un incremento di due.

3
5
7
9
11
13

Aggiungi un separatore tra i numeri

Per impostazione predefinita, seq utilizza un carattere di nuova riga come separatore per l'elenco. Questo è il motivo per cui ogni numero nell'elenco è su una riga separata.

Puoi modificare questo comportamento predefinito e utilizzare un separatore personalizzato utilizzando il pulsante -S bandiera. Per usare il Periodo (.) carattere come separatore:

seq -s. 3 7

Produzione:

3.4.5.6.7

Tieni presente che alcuni personaggi come Tilde (~) deve essere racchiuso tra virgolette. Questo perché il terminale usa il Tilde carattere per indicare il /home directory e ciò si rifletterebbe nell'output se non si aggiungono le virgolette.

seq -s ~ 3 7

Produzione:

3/casa/4/casa/5/casa/6/casa/7

D'altra parte, quando avvolgi il separatore tra virgolette:

seq -s '~' 3 7

Produzione:

3~4~5~6~7

Modifica il formato di output

Puoi anche cambiare il formato per la sequenza di output usando il -f bandiera. Per impostazione predefinita, seq estrae lo stile del formato dall'input dell'utente. Ad esempio, se si specificano i numeri 0,1 e 0,5, l'output predefinito avrà un formato numerico a virgola mobile.

successivo 0,1 0,5

Produzione:

0.1
0.2
0.3
0.4
0.5

Puoi specificare un formato di output personalizzato utilizzando le varie specifiche di conversione come %a, %e, %f, %g, %A, %E, %F e %G.

Puoi usare il %f specificatore se si desidera che l'output segua un formato numerico a virgola mobile.

seq-f %f 4 7

Produzione:

4.000000
5.000000
6.000000
7.000000

Per modificare la precisione fino a due decimali:

seq -f %0.2f 4 7

Produzione:

4.00
5.00
6.00
7.00

Puoi anche trasformare completamente l'output specificando un modello di output. Ad esempio, per ottenere un elenco di tutti gli indirizzi IP che iniziano con 192.168.5.x:

seq -f 192.168.5%g 1 233

Produzione:

Per aggiungere riempimento all'output, puoi usare il -w bandiera. Il -w flag mantiene la larghezza dell'output in base al numero più grande specificato.

Per generare una sequenza di numeri tra uno e 1.000 con un incremento di 100 mantenendo una larghezza costante:

seq -w 1 100 1000

Produzione:

0001
0101
0201
0301
0401
0501
0601
0701
0801
0901

Ottieni seq Guida dalla riga di comando

Sebbene seq sia facile da usare, a volte gli utenti potrebbero sentire il bisogno di controlla la pagina di manuale per il comando. Il --Aiuto flag mostrerà la pagina man di seq:

seq --help

Produzione:

Esempi pratici

Come già accennato, seq viene utilizzato principalmente con altri comandi Linux, ad esempio touch ed expr.

Eseguire operazioni matematiche

Se vuoi aggiungere o sottrarre rapidamente un particolare intervallo di numeri, puoi farlo facilmente usando seq inside espr, che è un comando Linux che tratta l'input come un'espressione e visualizza l'output corrispondente.

Per sommare tutti i numeri compresi tra uno e 100:

expr `(seq -s " + " 1 100)`

Il comando seq genera un output come segue:

1 + 2 + 3 + 4 + 5 + 6...

Expr la tratta come un'espressione di input e restituisce la soluzione.

5050

Puoi eseguire altre operazioni matematiche semplicemente sostituendo il separatore nel comando seq con altri operatori.

Crea rapidamente più file

Se vuoi creare più file su Linux i cui nomi seguono uno schema simile, puoi farlo facilmente usando il comando touch e segg.

Ad esempio, per creare 10 file con il nome file-x.txt, dove X è un numero da uno a 10:

tocca $(seq -f "file%g.txt" 1 10)

Touch creerà i file per te in un lampo.

Implementazione di seq negli script

Considera che stai scrivendo un strumento di scansione di rete come Nmap in bash, potresti voler ottenere un elenco di tutte le porte aperte in una rete. Ma per questo, è necessario eseguire il ping di ogni porta (65535 in totale) e analizzare la risposta.

Per risparmiare un po' di tempo, puoi scegliere di utilizzare seq e generare un elenco di indirizzi IP e combinazioni di porte che puoi utilizzare nel tuo script.

Supponiamo che tu voglia ottenere l'elenco di tutte le porte di un dispositivo con l'indirizzo IP 1.2.3.4. Ecco un comando rapido per generare l'output desiderato:

seq -f 1.2.3.4:%g 1 65535

Produzione:

Puoi quindi usare questo output come un elenco e attraversarlo, controllando ogni porta usando il tuo script e analizzando se è aperta o meno.

Quanto velocemente seq genera i numeri?

Potresti pensare se puoi ottenere risultati simili usando un ciclo for in bash, perché scegliere seq per l'attività? Questo perché il vero potere di seq sta nella sua velocità. Seq è più veloce di qualsiasi altro comando che genera una sequenza di numeri su Linux.

Puoi anche testare la sua velocità usando l'utility time su Linux. Vediamo quanto tempo impiega seq a generare una lista di un milione di numeri partendo da uno.

sequenza temporale 1000000

Guardando l'output qui sotto, puoi vedere che ci sono voluti solo circa quattro secondi per generare un elenco di un milione di numeri.

La potenza della riga di comando di Linux

Seq non è l'unico strumento in Linux che si concentra molto sulla fornitura di risultati rapidi e accurati. Mentre puoi generare un elenco di numeri usando un ciclo for in bash, non è una pratica consigliata considerando quanto sia davvero velocissimo seq.

La riga di comando di Linux ti offre un maggiore controllo sul sistema operativo e sulle sue funzionalità, motivo per cui dovresti iniziare a utilizzare il terminale sulla GUI oggi.

E-mail
5 motivi per scegliere il terminale Linux rispetto alla GUI

La riga di comando di Linux ha una posizione elevata quando si tratta di prestazioni, controllo e facilità d'uso.

Leggi Avanti

Argomenti correlati
  • Linux
Circa l'autore
Deepesh Sharma (65 Articoli Pubblicati)

Deepesh è l'editor junior per Linux di MUO. Scrive contenuti informativi su Internet da oltre 3 anni. Nel tempo libero ama scrivere, ascoltare musica e suonare la chitarra.

Altro da Deepesh Sharma

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per consigli tecnici, recensioni, ebook gratuiti e offerte esclusive!

Ancora un passo…!

Conferma il tuo indirizzo e-mail nell'e-mail che ti abbiamo appena inviato.

.