В Linux можете да намерите няколко команди с необичайни функционалности. Една такава команда е seq, която извежда последователност от числа в зависимост от посочените аргументи.
Но какво можете да направите с помощната програма за команден ред, която ви хвърля куп цифри? Ще разберете в това ръководство.
Какво представлява командата seq?
Както бе споменато по-горе, командата seq в Linux бързо генерира последователност от цифрови знаци. Потребителите могат да предават аргументи на командата, за да генерират различни комбинации от числа. Например можете да получите увеличен списък, като просто предадете допълнителен аргумент на seq.
Каква обаче е практическата употреба на командата? Въпреки че seq може да не изглежда като мощен инструмент в своята цялост, можете да се възползвате от командата, като я внедрите с други помощни програми на Linux. Можете също да използвате seq в баш скриптове да разкрие истинската си сила.
Как да използвам seq в Linux
Seq отнема само няколко аргумента, което го прави лесен за научаване инструмент за всеки.
Основен синтаксис
Основният синтаксис на командата е:
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 още днес.
Командният ред на Linux има високи позиции по отношение на производителността, контрола и лекотата на използване.
Прочетете Напред
- Linux
Deepesh е младши редактор за Linux в MUO. Той пише информационно съдържание в интернет повече от 3 години. В свободното си време той обича да пише, да слуша музика и да свири на китара.
Абонирайте се за нашия бюлетин
Присъединете се към нашия бюлетин за технически съвети, рецензии, безплатни електронни книги и ексклузивни оферти!
Още една стъпка…!
Моля, потвърдете имейл адреса си в имейла, който току-що ви изпратихме.