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.
Wiersz poleceń Linuksa ma wysoki poziom, jeśli chodzi o wydajność, kontrolę i łatwość użytkowania.
Czytaj dalej
- Linux
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.
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.