Гид по технологиям

Seq в Linux: как генерировать и применять последовательности

• 5 min read • Linux • Обновлено 18 Nov 2025
Seq в Linux — генерация чисел и скрипты
Seq в Linux — генерация чисел и скрипты

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

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

Команда seq в Linux выводит числовую последовательность в стандартный вывод. Её простота — сильная сторона: три аргумента позволяют задать начало, шаг и конец. Часто seq используют в сочетании с другими утилитами или в скриптах для генерации наборов аргументов или имен файлов.

Определение: seq — утилита для последовательной генерации чисел, подходящая для скриптов и конвейеров командной строки.

Важно: реализация seq входит в пакет coreutils у большинства дистрибутивов GNU/Linux; поведение в BSD-образцах может отличаться.

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

Базовый синтаксис выглядит так:

seq [опции] числа

Где опции — флаги (например, -s, -f, -w), а числа — аргументы, задающие последовательность.

Форматы ввода

Поддерживаются три варианта вызова:

seq last
seq first last
seq first increment last

Примеры ниже иллюстрируют каждое поведение.

Примеры использования

Сгенерировать список чисел от 1 до 5

seq 5

Вывод:

1
2
3
4
5

Указание начала и конца

seq 4 8

Вывод:

4
5
6
7
8

Указание шага (increment)

seq 3 2 13

Вывод:

3
5
7
9
11
13

Пользовательский разделитель

По умолчанию разделитель — символ новой строки. Флаг -s задаёт строковый разделитель между элементами.

seq -s . 3 7

Вывод:

3.4.5.6.7

Если разделитель может интерпретироваться оболочкой (например, тильда ~), его нужно брать в кавычки:

seq -s ~ 3 7

Этот вызов напечатает путь к домашней директории, если оболочка подставит ~. Чтобы избежать подстановки:

seq -s '~' 3 7

Вывод:

3~4~5~6~7

Форматирование вывода

Флаг -f позволяет задать шаблон формата, аналогично printf. Если вход содержит дробные значения, seq по умолчанию унаследует формат.

seq 0.1 0.1 0.5

Вывод:

0.1
0.2
0.3
0.4
0.5

Принудительный формат с плавающей точкой:

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-адресов:

seq -f 192.168.5.%g 1 233

Вывод (фрагмент):

пример формата вывода seq

Выравнивание ширины

Флаг -w сохраняет одинаковую ширину вывода в соответствии с наибольшим числом.

seq -w 1 100 1000

Вывод (первые строки):

0001
0101
0201
0301
0401
...

Помощь по команде

seq --help

Выведет краткую справку и список опций.

страница справки seq

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

Быстрая арифметика с expr

Вы можете сгенерировать выражение и подать его в expr для вычисления суммы ряда.

expr $(seq -s ' + ' 1 100)

Seq сформирует строку вроде 1 + 2 + 3 + ... + 100, а expr вычислит её и вернёт 5050.

Можно менять оператор разделителя, чтобы выполнять другие операции.

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

Чтобы создать файлы file1.txt … file10.txt:

touch $(seq -f 'file%g.txt' 1 10)

Этот вызов создаст 10 файлов в текущей директории.

создание файлов с помощью touch и seq

Генерация списка IP:порт для скрипта-сканера

Для перебора всех портов хоста 1.2.3.4 можно сгенерировать список строк 1.2.3.4:порт:

seq -f 1.2.3.4:%g 1 65535 > ports.txt

Затем проход по списку в скрипте:

while IFS= read -r target; do
  # пример проверки порта (nc, nmap, или собственная логика)
  nc -z -v ${target%:*} ${target#*:} && echo "open: $target"
done < ports.txt

использование seq в скрипте bash

Тестирование производительности

Seq генерирует последовательности очень быстро. Простой тест времени:

time seq 1000000 > /dev/null

На современных машинах генерация миллиона чисел занимает секунды; реальное время зависит от CPU и I/O.

производительность seq в linux

Когда seq не подойдёт или даст неожиданный результат

  • Плавающая точка: ограничения точности и накопление ошибок при дробных шагах. Для задач с высокой точностью лучше использовать Python/Perl.
  • Очень большие диапазоны: при перенаправлении в память или оболочку учитывайте потребление памяти (хотя seq печатает стримом, использование $(…) может собрать всё в память).
  • Портируемость: BSD seq может иметь другой набор опций; для кросс-платформенных скриптов проверяйте man.
  • Локаль: формат чисел (разделитель десятичной дроби) зависит от локали; при необходимости экспортируйте LC_NUMERIC=C.
  • Отрицательные и убывающие последовательности: убедитесь в порядке аргументов.

Альтернативные подходы

  • Bash-цикл for:
for i in {1..10}; do echo $i; done

Но выражение {1..N} не поддерживает дробные шаги и медленнее при больших объёмах, если используется внутри командной подстановки.

  • Использовать awk для гибкости и точности с плавающей точкой:
awk 'BEGIN{for(i=0;i<=1;i+=0.1) printf("%.1f\n", i)}'
  • Python/Perl для сложных вычислений и контроля ошибок округления.

Практические советы и шаблоны (cheat sheet)

  • Последовательность с шагом 5: seq 1 5 50
  • Однострочный список через пробел: seq -s ' ' 1 10
  • Шаблонированные имена: seq -f 'img_%03g.jpg' 1 100
  • Сохранить в файл: seq 1 100 > numbers.txt
  • Использовать с xargs: seq 1 100 | xargs -n1 -P8 -I{} cmd {}

Безопасность и экранирование

  • Всегда экранируйте разделители и шаблоны, которые может интерпретировать оболочка: используйте одинарные кавычки '...'.
  • При подстановке результата в команду проверьте, не формирует ли seq строки с небезопасными символами.

Критерии приёмки для скрипта, использующего seq

  • Скрипт корректно обрабатывает границы (включая отрицательные и убывающие диапазоны).
  • Нет неожиданных подстановок от оболочки (все нестандартные разделители в кавычках).
  • Для больших списков используется потоковая обработка, а не сбор всего вывода в памяти.
  • Поведение при дробных шагах соответствует требуемой точности.

Модель принятия решений (Mermaid)

flowchart TD
  A[Нужно сгенерировать последовательность?] --> B{Диапазон и шагы}
  B -->|Целые, простой| C[Использовать seq]
  B -->|Дробные, требование точности| D[Использовать awk или Python]
  B -->|Портируемость на BSD| E[Проверить man; возможно адаптировать]
  C --> F{Нужно форматирование}
  F -->|Да| G[seq -f или -w]
  F -->|Нет| H[seq без опций]

Рольовые чек-листы

  • Для разработчика: проверить поведение с разными локалями и дробными шагами; добавить unit-тесты для крайних значений.
  • Для системного администратора: использовать seq в массовых операциях с touch, mv, tar; избегать подстановки в память.
  • Для автора скриптов безопасности: эскейпить любые пользовательские данные, не доверять автоматическому форматированию.

Короткая методология внедрения в проект

  1. Определите требуемый диапазон и шаг.
  2. Выберите формат вывода (-f, -w) перед тем как передавать результат в другую команду.
  3. Проверяйте поведение в тестовом окружении (особенно при дробных шагах).
  4. При больших объёмах используйте потоковую обработку (while read, xargs, parallel).

Итог и рекомендации

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

В следующих случаях выбирайте альтернативу:

  • нужна высокая точность с плавающей точкой — используйте Python/awk;
  • требуется портируемость между GNU и BSD — тестируйте и адаптируйте;
  • результат не должен собираться в память — избегайте подстановок, которые делают это.

Краткий чек: используйте -s для разделителей, -f для шаблонов и -w для одинаковой ширины. Всегда экранируйте символы оболочки.

Extras: краткая сводка приведена в конце для быстрого применения на практике.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро