сек (Unix)
Разработчик(и) | AT&T Bell Laboratories |
---|---|
Первоначальный выпуск | февраль 1985 г |
Операционная система | Unix , Unix-подобные , Plan 9 |
Платформа | Кросс-платформенный |
Тип | Команда |
Лицензия | основные утилиты : GPLv3+ |
В Unix-подобных компьютерных системах seq — это утилита для генерации последовательности чисел.
История
[ редактировать ]seq впервые появился в 8-м издании Research Unix в 1985 году и не был принят другими вариантами Unix (такими как коммерческие Unix или BSD ). Тем не менее, позже он был принят в Plan 9 от Bell Labs , а оттуда был скопирован в некоторые современные потомки BSD, такие как FreeBSD . Другая версия seq была написана в 1994 году Ульрихом Дреппером для GNU и теперь доступна во всех дистрибутивах Linux как часть GNU Core Utilities . Команда доступна в виде отдельного пакета для Microsoft Windows как часть UnxUtils коллекции , состоящей из собственных Win32- портов распространенных GNU Unix-подобных утилит. [1]
Функциональность
[ редактировать ]В самом простом случае использования seq N выводит все целые числа от 1 до N. последовательно Это было удобно, поскольку в то время оболочка Unix, оболочка Bourne не имела примитивов для перебора чисел, а ее команда for могла перебирать только список слов. Поэтому для создания такого списка использовался seq, как в этом примере:
# Remove file1 through file17:
for n in `seq 17`
do
rm "file$n"
done
seq имел дополнительные параметры для управления началом (а не только концом) числовой последовательности, ее приращением ( числом с плавающей запятой ) и форматированием числа. GNU seq изменил имя и значение параметра формата (с -p на -f) и добавил параметр для управления разделителем между числами (-s, по умолчанию — новая строка).
При наличии других альтернатив (например, expr ) и более поздних оболочках, добавляющих встроенную числовую итерацию, seq сегодня используется реже. В современной оболочке Linux bash приведенный выше пример можно альтернативно записать так:
for n in {1..17}
do
rm "file$n"
done
и более эффективно, без фактической генерации всей последовательности заранее, поскольку
for ((n=1; n<=17; n++))
do
rm "file$n"
done
Ссылки
[ редактировать ]- ^ «Собственные порты Win32 некоторых утилит GNU» . unxutils.sourceforge.net .
- Страница руководства seq из 8-го издания Unix
- Страница руководства seq из FreeBSD
Внешние ссылки
[ редактировать ]- Linux пользователя по командам Руководство –
- Plan 9 , том 1 Руководство программиста –