В Linux можете да намерите няколко команди с необичайни функционалности. Една такава команда е seq, която извежда последователност от числа в зависимост от посочените аргументи.

Но какво можете да направите с помощната програма за команден ред, която ви хвърля куп цифри? Ще разберете в това ръководство.

Какво представлява командата seq?

Както бе споменато по-горе, командата seq в Linux бързо генерира последователност от цифрови знаци. Потребителите могат да предават аргументи на командата, за да генерират различни комбинации от числа. Например можете да получите увеличен списък, като просто предадете допълнителен аргумент на seq.

Каква обаче е практическата употреба на командата? Въпреки че seq може да не изглежда като мощен инструмент в своята цялост, можете да се възползвате от командата, като я внедрите с други помощни програми на Linux. Можете също да използвате seq в баш скриптове да разкрие истинската си сила.

Как да използвам seq в Linux

Seq отнема само няколко аргумента, което го прави лесен за научаване инструмент за всеки.

instagram viewer

Основен синтаксис

Основният синтаксис на командата е:

seq опции номера

...където настроики са флаговете, които можете да посочите за извикване на различни методи на командата и числа са аргументите, които предавате, за да генерирате числовата последователност.

Генерирайте списък с числа

Аргументите Seq следват входния формат, даден по-долу:

sq последно
сл. първо последно
seq първо нарастване последно

Когато посочите само едно число, seq го интерпретира като горна граница за списъка и генерира последователност, започвайки от едно до посоченото число.

сл. 5

Гореспоменатата команда ще изведе следното:

1
2
3
4
5

Когато seq получава две числа като вход, ги интерпретира като долна и горна граница за последователността. За да генерирате списък с числа от четири до осем:

сл. 4 8

Изход:

4
5
6
7
8

Но когато предадете три числа на командата, тя интерпретира втория аргумент като номер на нарастване. Например:

сл. 3 2 13

Гореспоменатата команда ще изведе списък с числа, започващи от три до 13 с увеличение от две.

3
5
7
9
11
13

Добавете разделител между числата

По подразбиране seq използва символ на нов ред като разделител за списъка. Това е причината всяко число в списъка да е на отделен ред.

Можете да промените това поведение по подразбиране и да използвате персонализиран разделител с помощта на флаг. За да използвате Период (.) знак като разделител:

sq-s. 3 7

Изход:

3.4.5.6.7

Имайте предвид, че някои знаци като Тилда (~) трябва да бъде затворено в кавички. Това е така, защото терминалът използва Тилда знак за обозначаване на /home директория и това ще се отрази в резултата, ако не добавите кавичките.

sq-s ~ 3 7

Изход:

3 / дом / 4 / дом / 5 / дом / 6 / дом / 7

От друга страна, когато обвивате разделителя с кавички:

sq-s '~' 3 7

Изход:

3~4~5~6~7

Настройте изходния формат

Можете също да промените формата на изходната последователност, като използвате -f флаг. По подразбиране seq извлича стила на формата от потребителския вход. Например, ако посочите числата 0,1 и 0,5, изходът по подразбиране ще има формат с число с плаваща запетая.

сл. 0,1 0,5

Изход:

0.1
0.2
0.3
0.4
0.5

Можете да посочите персонализиран изходен формат, като използвате различните спецификации за преобразуване като% a,% e,% f,% g,% A,% E,% F и% G.

Можете да използвате % f спецификатор, ако искате изходът да следва числов формат с плаваща запетая.

sq-f% f 4 7

Изход:

4.000000
5.000000
6.000000
7.000000

За да промените точността до два знака след десетичната запетая:

sq -f% 0.2f 4 7

Изход:

4.00
5.00
6.00
7.00

Можете също така да трансформирате изхода изцяло, като посочите изходен шаблон. Например, за да получите списък с всички IP адреси, които започват с 192.168.5.x:

sq -f 192.168.5.% g 1 233

Изход:

За да добавите подложка към изхода, можете да използвате -w флаг. The -w flag поддържа ширината на изхода в съответствие с най-големия посочен брой.

За да генерирате последователност от числа между едно и 1000 с нарастване от 100, като същевременно се поддържа постоянна ширина:

sq -w 1 100 1000

Изход:

0001
0101
0201
0301
0401
0501
0601
0701
0801
0901

Вземете помощ за командния ред

Въпреки че seq е лесен за използване, понякога потребителите може да почувстват необходимостта проверете ръководството за командата. The --помогне флагът ще покаже страницата sq man:

sq --помощ

Изход:

Практически примери

Както вече споменахме, seq се използва предимно с други команди на Linux, например touch и expr.

Извършвайте математически операции

Ако искате бързо да добавите или извадите определен диапазон от числа, можете да го направите лесно, като използвате seq вътре израз, което е команда на Linux, която третира входа като израз и показва съответния изход.

За да добавите всички числа между едно и 100:

израз `(sq-s" + "1 100)`

Командата seq генерира изход, както следва:

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

Expr го третира като входен израз и извежда решението.

5050

Можете да извършвате други математически операции, като просто замените разделителя в командата seq с други оператори.

Бързо създаване на множество файлове

Ако искате да създадете множество файлове в Linux, чиито имена следват подобен модел, можете да го направите лесно, като използвате командата за докосване и сл.

Например, за да създадете 10 файла с името file-x.txt, където х е число от едно до 10:

докоснете $ (seq -f "файл% g.txt" 1 10)

Докосването ще създаде файловете за вас светкавично.

Внедряване на seq в скриптове

Помислете, че пишете a инструмент за мрежов скенер като Nmap в bash, може да искате да получите списък на всички отворени портове в мрежата. Но за това трябва да пингнете всеки порт (общо 65535) и да анализирате отговора.

За да спестите малко време, можете да изберете да използвате seq и да генерирате списък с IP адреси и комбинации от портове, които можете да използвате във вашия скрипт.

Да предположим, че искате да получите списъка с всички портове на устройство с IP адрес 1.2.3.4. Ето бърза команда за генериране на желания изход:

sq -f 1.2.3.4:%g 1 65535

Изход:

След това можете да използвате този изход като списък и да преминете през него, като проверите всеки порт с помощта на вашия скрипт и анализирате дали е отворен или не.

Колко бързо seq генерира числата?

Може би си мислите дали можете да постигнете подобни резултати, като използвате цикъл for в bash, защо да изберете seq за задачата? Това е така, защото истинската сила на seq се крие в неговата скорост. Seq е по-бърза от всяка друга команда, която генерира поредица от числа в Linux.

Можете дори да тествате скоростта му, като използвате помощната програма за време в Linux. Нека да видим колко време отнема на seq за генериране на списък с един милион числа, започвайки от едно.

време sq 1000000

Разглеждайки изхода по-долу, можете да видите, че отне само секунди около четири секунди, за да се генерира списък с един милион числа.

Силата на командния ред на Linux

Seq не е единственият инструмент в Linux, който се фокусира силно върху предоставянето на бързи и точни резултати. Докато можете да генерирате списък с числа, като използвате цикъл for в bash, не е препоръчителна практика, като се има предвид колко пламтящ бърз sq е в действителност.

Командният ред на Linux ви дава повече контрол над операционната система и нейните функционалности, което също е причина да започнете да използвате терминала през GUI още днес.

електронна поща
5 причини да изберете терминала на Linux над графичния интерфейс

Командният ред на Linux има високи позиции по отношение на производителността, контрола и лекотата на използване.

Прочетете Напред

Свързани теми
  • Linux
За автора
Дийпеш Шарма (Публикувани 65 статии)

Deepesh е младши редактор за Linux в MUO. Той пише информационно съдържание в интернет повече от 3 години. В свободното си време той обича да пише, да слуша музика и да свири на китара.

Още от Deepesh Sharma

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, рецензии, безплатни електронни книги и ексклузивни оферти!

Още една стъпка…!

Моля, потвърдете имейл адреса си в имейла, който току-що ви изпратихме.

.