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

Но что вы можете сделать с утилитой командной строки, которая выдает вам кучу цифр? Вы узнаете из этого руководства.

Что такое команда seq?

Как упоминалось выше, команда seq в Linux быстро генерирует последовательность числовых символов. Пользователи могут передавать аргументы команде для генерации различных комбинаций чисел. Например, вы можете получить увеличиваемый список, просто передав дополнительный аргумент в seq.

Но каково практическое использование этой команды? Хотя seq в целом может показаться не очень мощным инструментом, вы можете воспользоваться этой командой, реализовав ее с другими утилитами Linux. Вы также можете использовать seq в сценарии bash раскрыть его истинную силу.

Как использовать seq в Linux

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

Базовый синтаксис

Основной синтаксис команды:

номера параметров seq

...где параметры - это флаги, которые вы можете указать для вызова различных методов команды и числа - это аргументы, которые вы передаете для генерации числовой последовательности.

Создать список чисел

Аргументы Seq соответствуют формату ввода, указанному ниже:

seq last
seq первая последняя
seq первое приращение последнее

Когда вы указываете только одно число, 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 использует символ новой строки в качестве разделителя для списка. По этой причине каждое число в списке находится на отдельной строке.

Вы можете изменить это поведение по умолчанию и использовать настраиваемый разделитель, используя -s флаг. Чтобы использовать Период (.) символ в качестве разделителя:

seq -s. 3 7

Выход:

3.4.5.6.7

Имейте в виду, что некоторые персонажи, такие как Тильда (~) должны быть заключены в кавычки. Это потому, что терминал использует Тильда символ для обозначения /home каталог, и это отразится на выходе, если вы не добавите кавычки.

seq -s ~ 3 7

Выход:

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

С другой стороны, когда вы заключаете разделитель в кавычки:

seq -s '~' 3 7

Выход:

3~4~5~6~7

Настройте формат вывода

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

seq 0.1 0.5

Выход:

0.1
0.2
0.3
0.4
0.5

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

Вы можете использовать % f спецификатор, если вы хотите, чтобы выходные данные соответствовали формату чисел с плавающей запятой.

seq-f% f 4 7

Выход:

4.000000
5.000000
6.000000
7.000000

Чтобы изменить точность до двух десятичных знаков:

seq -f% 0.2f 4 7

Выход:

4.00
5.00
6.00
7.00

Вы также можете полностью преобразовать вывод, указав шаблон вывода. Например, чтобы получить список всех IP-адресов, начинающихся с 192.168.5.x:

seq -f 192.168.5.% g 1 233

Выход:

Чтобы добавить отступ к выходу, вы можете использовать -w флаг. В -w flag поддерживает ширину вывода в соответствии с наибольшим указанным числом.

Чтобы сгенерировать последовательность чисел от одного до 1000 с шагом 100 при сохранении постоянной ширины:

seq -w 1 100 1000

Выход:

0001
0101
0201
0301
0401
0501
0601
0701
0801
0901

Получить справку по командной строке seq

Хотя seq прост в использовании, иногда пользователи могут почувствовать необходимость проверьте страницу руководства для команды. В --помощь flag отобразит страницу руководства seq:

seq --help

Выход:

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

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

Выполните математические операции

Если вы хотите быстро добавить или вычесть определенный диапазон чисел, вы можете легко сделать это, используя seq внутри expr, которая представляет собой команду Linux, которая обрабатывает ввод как выражение и отображает соответствующий вывод.

Чтобы сложить все числа от одного до 100:

expr `(seq -s" + "1 100)`

Команда seq генерирует следующий вывод:

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

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

5050

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

Быстро создавать несколько файлов

Если вы хотите создать несколько файлов в Linux, имена которых следуют аналогичному шаблону, вы можете легко сделать это, используя сенсорная команда и след.

Например, чтобы создать 10 файлов с именем файл-x.txt, где Икс это число от одного до 10:

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

Touch создаст для вас файлы в мгновение ока.

Реализация seq в скриптах

Представьте, что вы пишете инструмент сетевого сканера, такой как Nmap в bash вы можете захотеть получить список всех открытых портов в сети. Но для этого вам нужно пропинговать каждый порт (всего 65535) и проанализировать ответ.

Чтобы сэкономить время, вы можете использовать seq и сгенерировать список IP-адресов и комбинаций портов, которые вы можете использовать в своем скрипте.

Предположим, вы хотите получить список всех портов устройства с IP-адресом. 1.2.3.4. Вот быстрая команда для создания желаемого результата:

seq -f 1.2.3.4:%g 1 65535

Выход:

Затем вы можете использовать этот вывод как список и просматривать его, проверяя каждый порт с помощью вашего скрипта и анализируя, открыт он или нет.

Насколько быстро seq генерирует числа?

Вы можете подумать, если вы можете добиться аналогичных результатов с помощью цикла for в bash, зачем выбирать seq для задачи? Это потому, что настоящая сила seq заключается в его скорости. Seq быстрее, чем любая другая команда, генерирующая последовательность чисел в Linux.

Вы даже можете проверить его скорость с помощью утилиты time в Linux. Давайте посмотрим, сколько времени требуется, чтобы seq сгенерировал список из миллиона чисел, начиная с единицы.

время seq 1000000

Глядя на вывод ниже, вы можете видеть, что для создания списка из миллиона чисел потребовалось всего около четырех секунд.

Возможности командной строки Linux

Seq - не единственный инструмент в Linux, который в значительной степени ориентирован на получение быстрых и точных результатов. Хотя вы можете создать список чисел, используя цикл for в bash, это не рекомендуемая практика, учитывая, насколько на самом деле невероятно быстрая последовательность.

Командная строка Linux дает вам больше контроля над операционной системой и ее функциями, что также является причиной, по которой вам следует начать использовать терминал поверх графического интерфейса уже сегодня.

Электронное письмо
5 причин выбрать терминал Linux вместо графического интерфейса

Командная строка Linux имеет высокий уровень производительности, контроля и простоты использования.

Читать далее

Похожие темы
  • Linux
Об авторе
Дипеш Шарма (Опубликовано 65 статей)

Дипеш - младший редактор Linux в MUO. Он пишет информационный контент в Интернете более 3 лет. В свободное время он любит писать, слушать музыку и играть на гитаре.

Ещё от Deepesh Sharma

Подписывайтесь на нашу новостную рассылку

Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!

Еще один шаг…!

Пожалуйста, подтвердите свой адрес электронной почты в электронном письме, которое мы вам только что отправили.

.