W systemie Linux można znaleźć kilka poleceń o nietypowych funkcjach. Jednym z takich poleceń jest seq, które wyświetla sekwencję liczb w zależności od podanych argumentów.

Ale co możesz zrobić z narzędziem wiersza poleceń, które rzuca na ciebie kilka cyfr? Dowiesz się w tym przewodniku.

Co to jest polecenie seq?

Jak wspomniano powyżej, polecenie seq w systemie Linux szybko generuje sekwencję znaków numerycznych. Użytkownicy mogą przekazać argumenty do polecenia, aby wygenerować różne kombinacje liczb. Na przykład, możesz uzyskać zwiększoną listę, po prostu przekazując dodatkowy argument do seq.

Jaki jest jednak praktyczny użytek z polecenia? Chociaż sekwencja może nie wydawać się w całości potężnym narzędziem, możesz skorzystać z polecenia, implementując je za pomocą innych narzędzi systemu Linux. Możesz także użyć seq w skrypty basha by odsłonić jego prawdziwą moc.

Jak korzystać z seq w systemie Linux

Seq wymaga tylko kilku argumentów, co czyni go łatwym do nauczenia się narzędziem dla każdego.

Podstawowa składnia

Podstawowa składnia polecenia to:

seq opcje liczby

...gdzie opcje są flagami, które możesz określić, aby wywołać różne metody polecenia i liczby są argumentami, które przekazujesz w celu wygenerowania sekwencji liczbowej.

Wygeneruj listę liczb

Argumenty Seq są zgodne z formatem wejściowym podanym poniżej:

sekw. ostatni
seq pierwszy ostatni
seq pierwszy przyrost ostatni

Gdy określisz tylko jedną liczbę, sekwencja interpretuje ją jako górną granicę listy i generuje sekwencję od jednego do podanej liczby.

sekw. 5

Wspomniane polecenie wygeneruje następujące dane:

1
2
3
4
5

Gdy sekwencja otrzymuje dwie liczby jako dane wejściowe, interpretuje je jako dolną i górną granicę sekwencji. Aby wygenerować listę liczb od czterech do ośmiu:

nast 4 8

Wynik:

4
5
6
7
8

Ale kiedy podasz trzy liczby do polecenia, zinterpretuje drugi argument jako liczbę przyrostu. Na przykład:

kolejne 3 2 13

Wspomniane polecenie wyświetli listę liczb od trzech do 13 z przyrostem o dwa.

3
5
7
9
11
13

Dodaj separator między liczbami

Domyślnie seq używa znaku nowej linii jako separatora listy. To jest powód, dla którego każdy numer na liście znajduje się w osobnym wierszu.

Możesz zmienić to domyślne zachowanie i użyć niestandardowego separatora, używając -s flaga. Aby użyć Kropka (.) znak jako separator:

kolejne -s. 3 7

Wynik:

3.4.5.6.7

Pamiętaj, że niektóre postacie, takie jak Tylda (~) należy umieścić w cudzysłowie. Dzieje się tak, ponieważ terminal używa Tylda znak oznaczający /home katalogu, a to odzwierciedliłoby się w danych wyjściowych, jeśli nie dodasz cudzysłowów.

kolejne -s ~ 3 7

Wynik:

3/dom/4/dom/5/dom/6/dom/7

Z drugiej strony, gdy owijasz separator w cudzysłowy:

nast -s '~' 3 7

Wynik:

3~4~5~6~7

Dostosuj format wyjściowy

Możesz także zmienić format sekwencji wyjściowej za pomocą -fa flaga. Domyślnie seq wyodrębnia styl formatu z danych wejściowych użytkownika. Na przykład, jeśli określisz liczby 0,1 i 0,5, domyślne dane wyjściowe będą miały format liczb zmiennoprzecinkowych.

kolejne 0,1 0,5

Wynik:

0.1
0.2
0.3
0.4
0.5

Możesz określić niestandardowy format wyjściowy, używając różnych specyfikacji konwersji, takich jak %a, %e, %f, %g, %A, %E, %F i %G.

Możesz użyć %fa specyfikator, jeśli chcesz, aby dane wyjściowe były zgodne z formatem liczb zmiennoprzecinkowych.

seq-f %f 4 7

Wynik:

4.000000
5.000000
6.000000
7.000000

Aby zmienić dokładność do dwóch miejsc po przecinku:

seq -f %0.2f 4 7

Wynik:

4.00
5.00
6.00
7.00

Możesz również całkowicie przekształcić dane wyjściowe, określając szablon wyjściowy. Na przykład, aby uzyskać listę wszystkich adresów IP zaczynających się od 192.168.5.x:

seq -f 192.168.5%g 1 233

Wynik:

Aby dodać dopełnienie do wyjścia, możesz użyć -w flaga. -w flaga zachowuje szerokość danych wyjściowych zgodnie z największą określoną liczbą.

Aby wygenerować sekwencję liczb od 1 do 1000 z przyrostem 100 przy zachowaniu stałej szerokości:

seq -w 1 100 1000

Wynik:

0001
0101
0201
0301
0401
0501
0601
0701
0801
0901

Uzyskaj pomoc w wierszu poleceń

Chociaż seq jest łatwy w użyciu, czasami użytkownicy mogą odczuwać potrzebę need sprawdź stronę podręcznika dla polecenia. --Wsparcie flaga wyświetli seq man page:

seq --pomoc

Wynik:

Praktyczne przykłady

Jak już wspomniano, seq jest używany głównie z innymi poleceniami Linuksa, na przykład touch i expr.

Wykonywanie operacji matematycznych

Jeśli chcesz szybko dodać lub odjąć określony zakres liczb, możesz to łatwo zrobić za pomocą seq inside wyraż, które jest poleceniem systemu Linux, które traktuje dane wejściowe jako wyrażenie i wyświetla odpowiednie dane wyjściowe.

Aby dodać wszystkie liczby od 1 do 100:

wyrażenie `(seq -s " + " 1 100)`

Polecenie seq generuje dane wyjściowe w następujący sposób:

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

Wyr traktuje je jako wyrażenie wejściowe i wyprowadza rozwiązanie.

5050

Możesz wykonywać inne operacje matematyczne, po prostu zastępując separator w poleceniu seq innymi operatorami.

Szybko twórz wiele plików

Jeśli chcesz utworzyć wiele plików w systemie Linux, których nazwy mają podobny wzór, możesz to łatwo zrobić za pomocą polecenie dotykowe i nast.

Na przykład, aby utworzyć 10 plików o nazwie plik-x.txt, gdzie x to liczba od 1 do 10:

dotknij $(seq -f "plik%g.txt" 1 10)

Dotyk utworzy dla Ciebie pliki w mgnieniu oka.

Implementacja seq w skryptach

Weź pod uwagę, że piszesz narzędzie do skanowania sieci, takie jak Nmap w bash możesz chcieć uzyskać listę wszystkich otwartych portów w sieci. Ale w tym celu musisz pingować każdy port (łącznie 65535) i przeanalizować odpowiedź.

Aby zaoszczędzić trochę czasu, możesz użyć seq i wygenerować listę adresów IP i kombinacji portów, których możesz użyć w swoim skrypcie.

Załóżmy, że chcesz uzyskać listę wszystkich portów urządzenia z adresem IP 1.2.3.4. Oto szybkie polecenie do wygenerowania żądanego wyniku:

seq -f 1.2.3.4:%g 1 65535

Wynik:

Następnie możesz użyć tych danych wyjściowych jako listy i przejść przez nią, sprawdzając każdy port za pomocą skryptu i analizując, czy jest otwarty, czy nie.

Jak szybko sekwencja generuje liczby?

Być może myślisz, że jeśli możesz osiągnąć podobne wyniki za pomocą pętli for w bash, po co wybierać seq do zadania? Dzieje się tak, ponieważ prawdziwa siła seq tkwi w jego szybkości. Seq jest szybszy niż jakiekolwiek inne polecenie, które generuje sekwencję liczb w systemie Linux.

Możesz nawet przetestować jego szybkość za pomocą narzędzia czasu w systemie Linux. Zobaczmy, ile czasu zajmuje seq wygenerowanie listy miliona liczb, zaczynając od jednego.

sekwencja czasu 1000000

Patrząc na poniższy wynik, można zauważyć, że wygenerowanie listy składającej się z miliona liczb zajęło seq zaledwie około czterech sekund.

Potęga wiersza poleceń systemu Linux

Seq nie jest jedynym narzędziem w Linuksie, które koncentruje się na dostarczaniu szybkich i dokładnych wyników. Chociaż możesz wygenerować listę numerów za pomocą pętla for w bashu, nie jest to zalecana praktyka, biorąc pod uwagę, jak naprawdę szybka jest sekwencja.

Wiersz poleceń systemu Linux zapewnia większą kontrolę nad systemem operacyjnym i jego funkcjami, co jest również powodem, dla którego już dziś powinieneś zacząć korzystać z terminala przez GUI.

E-mail
5 powodów, dla których warto wybrać terminal Linux ponad GUI

Wiersz poleceń Linuksa ma wysoki poziom, jeśli chodzi o wydajność, kontrolę i łatwość użytkowania.

Czytaj dalej

Powiązane tematy
  • Linux
O autorze
Deepesh Sharma (65 opublikowanych artykułów)

Deepesh to Junior Editor dla Linuksa w MUO. Od ponad 3 lat pisze treści informacyjne w internecie. W wolnym czasie lubi pisać, słuchać muzyki i grać na gitarze.

Więcej od Deepesha Sharma

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Jeszcze jeden krok…!

Potwierdź swój adres e-mail w e-mailu, który właśnie do Ciebie wysłaliśmy.

.