Jak korzystać z polecenia seq w systemie Linux
Opublikowany: 2022-01-29 Komenda Linux seq
generuje listy liczb w mgnieniu oka. Ale jak można wykorzystać tę funkcjonalność w praktyce? Pokażemy Ci, jak może Ci się przydać sekwencja.
Kolejne polecenie
Na pierwszy rzut oka polecenie Linux seq
wydaje się być czymś dziwnym. Pozwala szybko generować ciągi liczb i to wszystko! Tutaj jednak słowo kluczowe brzmi „szybko”. Za chwilę zobaczysz, jak szybko może działać to małe polecenie.
Jednak niezależnie od tego, jak są generowane, jak użyteczna jest lista liczb? Polecenie seq
zostało dodane do 8. edycji Uniksa w 1985 roku. Od tego czasu istnieje, więc musi robić coś wartościowego.
Filozofia Unixa polega na tym, że jest pełen małych narzędzi, które robią jedną rzecz i robią to dobrze. Jedną z głównych zasad tej filozofii jest pisanie programów, które akceptują dane wejściowe z innych programów. Oczywiście oznacza to również, że te programy muszą generować dane wyjściowe, które mogą być używane jako dane wejściowe przez inne programy.
Polecenie seq
działa samodzielnie, gdy jest używane z innymi poleceniami, które wykorzystują jego dane wyjściowe, zarówno poprzez potoki, jak i rozwijanie wiersza poleceń.
Podstawowe generowanie listy
Jeśli uruchomisz seq
z pojedynczą liczbą jako parametrem wiersza poleceń, liczy się od jednego do tej liczby. Następnie drukuje liczby w oknie terminala, po jednym w wierszu, jak pokazano poniżej:
sekw. 6
Jeśli wpiszesz dwie liczby w wierszu poleceń, pierwsza będzie numerem początkowym, a druga numerem końcowym, jak pokazano poniżej:
nast 4 10
Możesz ustawić rozmiar kroku, dołączając trzecią liczbę. Znajduje się między numerem początkowym i końcowym. Wpisujemy następujące polecenie, aby poprosić seq
o utworzenie listy liczb, która zaczyna się od sześciu, kończy na 48 i używa kroku sześciu:
kolejne 6 6 48
Liczenie wstecz
Możemy również poprosić seq
o utworzenie listy liczb od najwyższej do najniższej. Aby to jednak zrobić, musimy podać krok, który jest negatywny.
Poniższe polecenie tworzy listę liczącą od 24 do 12 w krokach po 6, ponieważ wpisujemy ten krok jako liczbę ujemną:
seq 24 -6 12
Liczenie z ułamkami dziesiętnymi
Numery początku, końca i kroku również mogą być ułamkami dziesiętnymi. Jeśli którakolwiek z liczb jest ułamkiem dziesiętnym, pozostałe są również traktowane jako ułamki dziesiętne. Poniższe polecenie generuje listę liczb z krokiem 0,2:
kolejny 1 0,2 2
Szybkość seq
seq
jest niesamowicie szybki — jedynym wąskim gardłem jest czas potrzebny na wpisanie polecenia w oknie terminala. Aby przetestować jego szybkość, poprośmy o listę 250 000 liczb.
Wpisujemy następujące polecenie, używając polecenia time
, aby zobaczyć, jak długo trwa proces:
sekwencja czasu 250000
Wyniki są wyświetlane pod listą. Nawet na naszym testowym komputerze o średniej mocy, seq
jest zaskakująco szybki.
Cała lista została utworzona i zapisana na ekranie w około 1/3 sekundy. Jeśli przekierujemy listę do pliku, możemy nawet uniknąć narzutu wpisywania w oknie terminala.
W tym celu wpisujemy:
sekwencja czasu 250000 > liczby.txt
Czas potrzebny na uzupełnienie listy i utworzenie pliku wynosi teraz około 1/7 sekundy.
Korzystanie z separatora
Znak nowego wiersza to domyślny znak wyświetlany między każdą liczbą na liście. Dlatego pojawiają się jako pionowa lista, z każdą liczbą w osobnym wierszu. W razie potrzeby możesz podać inny separator.
Załóżmy na przykład, że musisz utworzyć listę rozdzielaną przecinkami, listę podzieloną dwukropkami lub dowolny inny znak interpunkcyjny lub symbol. Ogranicznik jest w rzeczywistości ciągiem, więc możesz użyć więcej niż jednego znaku.
Użyjemy opcji -s
(separator). Następujące polecenie wygeneruje listę rozdzielaną przecinkami:
kolejne, 6 6 36
To polecenie użyje dwukropka ( :
) jako separatora:
kolejne -s: 6 6 36
To polecenie mówi seq
, aby używał dwóch myślników ( -
) jako separatora:
kolejne -s-- 6 6 36
Używanie ciągów formatujących
Polecenie seq
obsługuje również ciągi formatu w stylu języka C. Pozwalają one na formatowanie danych wyjściowych z dużo większą kontrolą niż tylko określenie separatora. Aby użyć ciągu formatu, użyj opcji -f
(format).
Poniższe polecenie mówi seq
, aby używał zer w celu uzupełnienia danych wyjściowych do dwóch znaków:
seq -f "%02g" 6
Możemy sformatować ciąg dowolnym tekstem i umieścić liczbę w dowolnym miejscu ciągu w następujący sposób:
seq -f "Liczba %02g w łańcuchu formatu podobnym do C" 6
Szybki sposób na ustawienie dopełnienia zerowego
Najszybszym sposobem ustawienia dopełnienia zerami jest użycie opcji -w
(równej szerokości). To mówi seq
, aby używał zer do uzupełniania liczb, aby wszystkie miały taką samą szerokość jak największa liczba.
Następujące polecenie liczy od 0 do 1000 w krokach co 100, a wszystkie liczby zostaną uzupełnione zerami:
seq -w 0 100 1000
Najdłuższa liczba zajmuje cztery znaki, więc wszystkie węższe liczby są dopełniane zerami do tej szerokości (nawet 0 jest dopełniane do czterech zer).
Rurociąg seq do bc
Ustawiając separator jako symbol matematyczny i przesyłając listę do polecenia bc
, możemy ocenić liczby na tej liście.
Poniższe polecenie generuje listę liczb oddzielonych gwiazdkami ( *
), zaczynając od jednego i kończąc na sześciu:
seq -s* 6
Jeśli wprowadzimy tę listę do bc
, ocenia listę za pomocą gwiazdek ( *
) jako symboli mnożenia:
seq -s* 6 | pne
Możemy to zrobić również z innymi symbolami. Poniższe polecenie używa znaku plus ( +
), aby utworzyć listę, w której dodawane są wszystkie liczby:
kolejne -s+ 5
Wpisujemy następujące polecenie, aby przesłać to do bc
i ocenić listę:
seq -s+ 5 | pne
Tworzenie plików za pomocą seq
Polecenie touch
aktualizuje znaczniki czasu i daty w plikach. Jeśli plik nie istnieje, dotknij go, aby go utworzyć. Możemy użyć rozwijania wiersza poleceń za pomocą touch
i seq
, aby utworzyć kolekcję tematycznie nazwanych, ale inaczej ponumerowanych plików.
Utworzymy zestaw 10 plików o tej samej nazwie podstawowej i innym numerze (plik-1.txt, plik-2.txt itd.). Wpisujemy:
dotknij $(seq -f "plik-%g.txt" 1 10)
Następnie wpisujemy następujące polecenie, aby sprawdzić pliki:
plik ls*
Używanie seq w Bash Loops
Możemy użyć seq
w skryptach Bash do sterowania pętlami z ułamkami dziesiętnymi.
Wpisz następujący tekst do edytora, a następnie zapisz go jako „loops.sh”:
#!/kosz/bash dla val w $(seq 5 0,2 6,6); robić echo "Wartość to teraz: $val" Gotowe
Następnie wpisujemy następujące polecenie, aby nasz nowy skrypt był wykonywalny:
chmod +x loop.sh
Kiedy uruchamiamy skrypt, licznik pętli jest wypisywany w oknie terminala. Następnie możemy wpisać następujące polecenie, aby zobaczyć, jak licznik pętli dziesiętnych zwiększa się z każdą iteracją pętli:
./pętla.sh
Pamiętaj, że seq
może również liczyć wstecz; możesz użyć tego w pętlach w ten sam sposób.
Ładne i proste
Jedną rzeczą w seq
jest to, że nie ma wiele do nauki. Ma odświeżająco krótką stronę man
, ale nadal możesz jej używać w ciekawy sposób.
Ponieważ często musimy szybko tworzyć pliki testowe o realistycznych rozmiarach, używamy seq
z ciągiem formatu. Następnie przekierowujemy wyjście, aby utworzyć plik zawierający tyle wierszy fikcyjnych danych, ile chcemy.
Polecenia Linuksa | ||
Pliki | tar · pv · kot · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · dysk testowy · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · ogon · stat · ls · fstab · echo · mniej · chgrp · chown · rev · wygląd · stringi · typ · zmiana nazwy · zip · rozpakuj · montuj · umount · zainstaluj · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · konwertuj · rclone · shred · srm | |
Procesy | alias · ekran · top · ładne · renice · postęp · strace · systemd · tmux · chsh · historia · w · wsad · free · co · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · ściana · tak · kill · sen · sudo · su · czas · groupadd · usermod · grupy · lshw · zamknij · restart · halt · poweroff · passwd · lscpu · crontab · data · bg · fg | |
Sieć | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
POWIĄZANE: Najlepsze laptopy z systemem Linux dla programistów i entuzjastów